Console Class

http://msdn.microsoft.com/en-us/library/system.console.aspx

Console 클래스에는 ReadLine, WriteLine 같은 기본적인 입출력 메서드 외에도 콘솔 관리를 위한 여러 가지 멤버들이 제공된다. 어떤 멤버는
함수처럼 필요할 때 호출할 수 있는 메서드이고 어떤 것은 값을 읽고 쓰는 프로퍼티 형태로 되어 있다.

멤버

설명

Title

콘솔창의
제목
문자열이다.

BackgroundColor, ForegroundColor

전경색, 배경색의
색상이다.

CursorSize

커서의
높이를
지정한다.

CursorVisible

커서의
보임/숨김을
지정한다.

CursorLeft, CursorTop

커서의
현재
위치이다.

Clear()

화면을
지운다.

Beep()


소리를
낸다.

ResetColor()

디폴트
색상으로
변경한다.

SetCursorPosition(x,y)

커서의
위치를
옮긴다.

class Program
{
public
static void Main()
{
        Console.Title = “콘솔 테스트”; // 콘솔창의 제목
        Console.BackgroundColor = ConsoleColor.Blue; // 콘솔창의 배경색
Console.ForegroundColor = ConsoleColor.Yellow; // 콘솔창의 전경색
        Console.Clear(); // 콘솔창 화면을 깨끗이 지움
Console.Beep(); // 콘솔창에 삑소리를 냄
Console.WriteLine(“색상을 변경했습니다.”); // 콘솔창에 “색상을 변경했습니다.” 출력
Console.ReadKey(); // 콘솔창에서 아무키나 입력받길 대기
Console.ResetColor(); // 콘솔창에서 색상(배경,전경)을 초기화
        Console.SetCursorPosition(10, 10); // (10, 10) 좌표로 커서를 이동
Console.WriteLine(“디폴트 색상입니다.”); //  콘솔창에 “디폴트 색상입니다.” 출력
Console.ReadKey(); // 콘솔창에서 아무키나 입력받길 대기
    }
}

Stack vs Heap

스택(Stack)은 Last-In, First-Out(LIFO) 방식으로 아이템을 저장하는 메모리의 자료 구조이다.
스택(Stack)은 지역변수(local variable)와 함수 리턴주소를 저장한다. C#에서 값형식(Value Type) 데이터는 스택에 저장된다.

힙(Heap)은 프로그램 코드 영역과는 별도로 유지되는 자유 메모리 공간이다.
힙(Heap)은 C#에서 new를 사용하여 메모리 할당하여 이 공간을 사용할 수 있다.
힙에 할당된 데이터는 전역변수(global variable)처럼 프로그램이 종료될 때까지 유지된다.
C#에서는 더이상 참조하지 않는 데이터를 자동으로 해제해준다 (gabage collection).
C#에서는 참조형식(Reference Type)은 스택에 메모리 주소를 저장하고 힙에 실질적인 데이터가 저장된다.

http://en.csharp-online.net/Stack_vs._Heap

http://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap

Main Method

 http://msdn.microsoft.com/ko-kr/library/acy3edy3(v=vs.100).aspx

– Main 메서드는 프로그램 제어가 시작되고 끝나는 .exe 프로그램의 진입점입니다.

– Main은 클래스 또는 구조체 내부에 선언됩니다.Main은 static이어야 하며 public이 아니어야 합니다.이전 예제에서 이 메서드에는 기본 액세스 수준인 private이 지정되었습니다. 이 메서드의 바깥쪽 클래스나 구조체는 정적일 필요가 없습니다.

 

– Main은 void 또는 int 반환 형식일 수 있습니다.

 

– Main 메서드는 명령줄 인수를 포함하는 string[] 매개 변수가 있거나 없는 상태로 선언할 수 있습니다.Visual Studio를 사용하여 Windows Forms 응용 프로그램을 만드는 경우 수동으로 매개 변수를 추가하거나 Environment 클래스를 사용하여 명령줄 인수를 가져올 수 있습니다.매개 변수는 명령줄 인수(0부터 시작)로 읽습니다. C 및 C++와 달리 프로그램의 이름은 첫 번째 명령줄 인수로 취급되지 않습니다.

 

class Program
{
static void Main(string[] args)
{
// Display the number of command line arguments:
System.Console.WriteLine(args.Length);
}
}

.Net Namespace

using System;

namespace ConsoleApplication1
{
  namespace A
{
class MyClass
{
int value = 1;
public void MyMethod() { System.Console.WriteLine(value); }
}
}
  namespace B
{
class MyClass
{
double value = 2.1;
public void MyMethod() { System.Console.WriteLine(value); }
}
}

class Program
{
static void Main(string[] args)
{

        A.MyClass a = new A.MyClass();
a.MyMethod(); // 1 출력
        B.MyClass b = new B.MyClass();
b.MyMethod(); // 2.1 출력
}
}
}

namespace SampleNamespace
{
class SampleClass
{
public void SampleMethod()
{
System.Console.WriteLine(
“SampleMethod inside SampleNamespace”);
}
}// Create a nested namespace, and define another class.
namespace NestedNamespace
{
class SampleClass
{
public void SampleMethod()
{
System.Console.WriteLine(
“SampleMethod inside NestedNamespace”);
}
}
}class Program
{
static void Main(string[] args)
{
// Displays “SampleMethod inside SampleNamespace.”
SampleClass outer = new SampleClass();
outer.SampleMethod();

// Displays “SampleMethod inside SampleNamespace.”
SampleNamespace.SampleClass outer2 = new SampleNamespace.SampleClass();
outer2.SampleMethod();

// Displays “SampleMethod inside NestedNamespace.”
NestedNamespace.SampleClass inner = new NestedNamespace.SampleClass();
inner.SampleMethod();
}
}
}