All posts by kpark

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)이 자동으로 생성된다.

사용자 삽입 이미지