Value Type vs Reference Type

값 형식(Value Type)과 참조 형식(Reference Type) 



























구분


값 형식(Value Type)


참조 형식(Reference Type)


종류


내장형 (int, char, float,…)


사용자 정의형 (enum, stuct)


Object, string, class, interface, delegate, ..


메모리 사용


스택


스택,


대입(Assignment)


복사


참조 변경


크기


고정


가변


Garbage Collector 지원


지원 안됨


지원 됨


http://dis.dankook.ac.kr/lectures/hci10/entry/Value-Type과-Reference-Type의-비교

값형식(Value Type)은 메모리를 직접 가리킨다.
참조형식(Reference Type)은 메모리를 참조를 통해서 가리킨다.

값형식(Value Type)은 변수의 선언과 동시에 메모리에 생성한다.
참조형식(Reference Type)은 변수의 선언과 메모리 생성 분리하여 생성한다.

값형식(Value Type)은 값형식끼리 할당 메모리의 값들을 그대로 복사한다.
참조형식(Reference Type)은 참조형식끼리 할당 할때 참조값만을 복사한다.

C# DataType

Boolean (bool)


Character (char)


Enumeration (enum)


Numeric (int, long, float, double, decimal, etc)


String

Object

Struct

ArrayTest

StructTest

namespace

namespace (C# Study)
http://csharpstudy.com/CSharp/CSharp-namespace.aspx

namespace (Hoons.net)
http://www.hoons.kr/Lecture/LectureMain.aspx?BoardIdx=43000&kind=53&view=0

namespace (Winapi)
http://www.winapi.co.kr/dotnet/book/2-3-1.htm

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 출력
         }
    }
}

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(); // 콘솔창에서 아무키나 입력받길 대기
    }
}

VC# Console Program Using Notepad

VC# Console Program Using Notepad

C:\Windows\Microsoft.NET\Framework\v4.0.30319 디렉토리 안에 C# 컴파일러인 csc.exe 가 있는지 확인한다.

사용자 삽입 이미지

환경변수 Path에 추가 (제어판->시스템->고급->환경변수->시스템변수->Path)에 C:\Windows\Microsoft.NET\Framework\v4.0.30319 를 추가한다.

사용자 삽입 이미지

메모장(notepad)에 C# 코드를 작성한 후 .cs 라는 확장자로 저장한다.

사용자 삽입 이미지

도스창에서 csc.exe 명령을 통해 컴파일한다.
만약 XML 도큐먼트 파일 생성을 원할 경우 ~>csc.exe Hello.cs /doc:myComment.xml 과 같이 /doc 문서옵션을 주어 컴파일을 한다.

사용자 삽입 이미지

생성된 실행파일 (hello.exe)를 실행한다.

사용자 삽입 이미지

 

VC# Console Application Using VS.NET

VC# Console Application Using VS.NET 2010

프로젝트 새로 만들기

사용자 삽입 이미지

메뉴에서 File->New->Project->Visual C# 템플릿->Console Application를 선택한 후 “프로젝트 이름(예를 들어, HelloWorld)”을 적고 확인버튼을 누른다.

사용자 삽입 이미지

기본적으로 생성된 Program.cs를 HelloWorld.cs로 바꾼다 .
코드 추가 – HelloWorld를 출력하는 routine을 추가한다.

사용자 삽입 이미지

컴파일(Build F7)과 실행(Start Without Debugging CTRL+F5) – 콘솔창에 Hello World!가 출력된다 .

사용자 삽입 이미지

Solution Explorer 에서 Project->Properties->Build 탭에서 XML 문서파일에 체크해서 컴파일하면 XML 도큐먼트 파일(bin/debug/HelloWorld.XML)이 자동으로 생성된다.

사용자 삽입 이미지