= #!wiki
= \cat StudyMaterial
=
* 참여자: HuidaeCho
=
= =! 상수
=
= TOC
=
= C#에는 const, readonly 그리고 enum 등의 세 가지 상수가 있다. 이 중에서 const와 readonly는 값을 변경할 수 없는 변수와 같으며 enum은 이름을 가지는 정수형 상수라 할 수 있다.
=
= = const, readonly
=
= const는 변수의 정의와 함께 초기화되어야 하는 상수이고 readonly는 추가적으로 클래스의 static 생성자에서 초기화할 수 있는 상수이다. 말 그대로 상수이므로 두 번 이상의 초기화는 할 수 없다.
= --bcode--
= using System;
=
= class ConstReadonlyTest{
= // const 상수는 반드시 정의와 함께 초기화되어야 하며 그 값은 변경이
= // 불가능하다. const는 자동으로 static 변수로 선언된다.
= public const string cnst = "Hi";
=
= // readonly 상수도 const와 같이 정의와 함께 초기화할 *수도* 있으나
= // 자동으로 static 멤버가 되지는 않는다. static이 아닌 readonly 상수는
= // 반드시 정의와 함께 초기화되어야 한다.
= public readonly int rdonly = 2;
=
= // readonly 상수는 static 키워드를 이용해서 직접 static으로 만들 수
= // 있다. 초기화하지 않을 경우 0이 할당된다.
= public static readonly int rdonly2;
=
= // static readonly 상수의 초기화는 static 생성자에서만 가능하다.
= public static readonly int rdonly3;
=
= // static 생성자는 public 또는 private으로 선언할 수 없으며 인스턴스
= // 생성시가 아닌 클래스 참조시에 실행된다.
= static ConstReadonlyTest(){
= rdonly3 = 3;
= }
= }
=
= class ConstReadonlyExample{
= public static void Main(){
= // cnst는 static 멤버이다.
= Console.WriteLine(ConstReadonlyTest.cnst);
=
= Console.WriteLine(ConstReadonlyTest.rdonly2);
= Console.WriteLine(ConstReadonlyTest.rdonly3);
=
= ConstReadonlyTest test = new ConstReadonlyTest();
= Console.WriteLine(test.rdonly);
= }
= }
= --ecode--
=
= = enum
=
= enum은 이름을 가지는 열거형 상수이다.
= --bcode--
= using System;
=
= class EnumExample{
= // enum은 반드시 메서드 밖에서 정의해야 한다.
= enum Number{zero, two=2, three, four}
= public static void Main(){
= // i는 Number enum에서 정의하지 않은 1의 값을 가질 수 있다.
= for(Number i=Number.zero; i<=Number.four; i++)
= Console.Write(i+"="+(int)i+"\t");
= Console.Write("\n");
=
= for(int j=0; j<=4; j++)
* // int형인 j를 Number enum으로 캐스팅할 수 있다.
= Console.Write((Number)j+"="+j+"\t");
= Console.Write("\n");
= }
= }
= --ecode--
=
=
= = 토론
=