その先にあるもの…

C# const / readonly 본문

프로그래밍/C#

C# const / readonly

specialJ 2013. 9. 2. 19:00

const

  • 선언 시 반드시 값을 할당해야 한다.
    const int x = 1;

  • 한번 값이 할당되면 이후 변경이 불가능하다.
  • 상수는 자동으로 static이다.
  • 참조 타입은 const 일 수 없다. 
  • 동적으로 메모리에 할당되는 객체와 같은 참조타입은 const로 선어하여 초기화 할 수 없다.
    const int[] array = new int[] { 1, 2, 3 };     //error CS0134

    - const의 값은 컴파일 시점에서 결정되어야 함 컴파일러가 const 상수를 컴파일 시 값을 어셈블리의 메타데이터에 바로 기입 
        new는 메모리 할당 후에 값을 기입하기 때문에 에러  
    - 참조 타입은 NULL로 초기화 되어야 함.
    - 문자열은 예외
        const string str = "STRING"; 
  • const는 참조형태로 전달 할 수 없다. ( ref / out )
    컴파일시에 주소가 생성되어 있지 않기 때문에 주소 값을 넘겨주는 방식의 참조는 할 수 없다.



readonly


  • 선언시 값을 할당하지 않아도 된다.
  • 생성자에서 한번 더 변수 값을 변경할 수 있다.
  • readonly는 static이 아니다.
  • 참조 형식 상수 선언
    readonly int[] array = new i nt[] { 1, 2, 3 }; //가능
  • 리플렉션
    예외적인 상황으로 리플렉션 기법을 이요하면 실행 중에도 값을 변경할 수 있다. 




참조 : http://www.mkexdev.net/Article/Content.aspx?parentCategoryID=1&categoryID=5&ID=677

'프로그래밍 > C#' 카테고리의 다른 글

CreateInstance, InvokeMember  (0) 2014.04.21
unsafe  (0) 2014.03.28
C#> struct -> string  (0) 2013.10.31
C# delegate  (0) 2013.09.10
Unity3D yield  (0) 2013.05.30
Comments