아디봉의.net
C# const 상수 본문
const 상수
c#에서 상수 선언하는 방법
1) const키워드 사용하는 방법
ex) public const int SALLERY = 7070;
const로 선언한 상수는 내부에서 자동으로 static 가 된다.
* 스태틱으로 선언된 필드나 함수는 스태틱이라고 하는 특수한 메모리 영역에 단 하나의 메모리가 생성되기 때문에 클래스 전체에 공유할 수 있다. 그리고 스태틱의 특성상 객체를 생성하지않고 클래스의 이름으로 상수에 바로 접근이 가능하다.
특징1 - const상수는 자동으로 static 가된다.
특징2 - const로 선언한 변수는 반드시 초기화 되어야 한다.
여러개의 const상수선언
ex) public const int A = 1, B=2, c=3;
const상수는 반드시 컴파일시에 미리 상수의 값이 초기화 되어있어야한다. 상수의 특성상 초기에 설정하지 않으면 다시는 설정할 수 없게 된다.
const상수가 static라는 것을 증명해주는 예제
using System;
public class ConstSample{
public const int BOY = 9, MAN = BOY + 12;
}
public class ConstTest{
public static void Main{
Console.WriteLine("BOY = " + ConstSample.BOY);//객체를 생성않고 바로 const상수에 접근
Console.WriteLine("MAN =" + ConstSample.MAN);//객체를 생성않고 바로 const상수에 접근
}//main
}//class
2) readonly 키워드 사용방법
초기화 해주지 않아도됨, 언제가는 값을 할당해줘야 하는데 그것이 생성자에서 딱한번 할당할수 있는 방법을 제공한다.
특징1 - 반드시 초기화 필요 x
public readonly int READ;
특징2 - readonly 키워드를 사용하면 스태틱 상수(유일무이한 오직 하나의 메모리를 가지는 상수)가 되고, 사용하지 않으면 일반상수(객체가 생성될 때마다 메모리가 생성되는 객체상수)가 된다.
static readonly
- static readonly일 경우 생성자에서 초기화 할수 있다.
- static readonly일 경우 클래스의 이름으로 접근가능
일반 readonly
- 일반 readonly 일경우 생성자에서 초기화 할수 있다.
- 일반 readonly 일 경우 객체의 이름으로 접근가능
using System;
public class ReadonlyTest{
public readonly static int STATIC_READONLY = 1
public readonly int NOMAL_READONLY = 1
static ReadonlyTest() // 스태틱 생성자
{
STATIC_READONLY = 100;
}
public ReadonlyTest() //일반 생성자
{
NOMAL_READONLY = 10000;
}
public static void main(){
Console.WriteLine("STATIC_READONLY" + ReadonlyTest.STATIC_READONLY);
ReadonlyTest rt1 = new ReadonlyTest();
Console.WriteLine("NOMAL_READONLY" + rt1.NOMAL_READONLY);
}//main
}//class
특징3
- readonly 상수는 생성자를 통해서 런타임시 값을 초기화 하고자 할 때 사용한다.
- 생성자에서 값이 결정되면 다시는 그 값을 변경 할수 없다.
'C#' 카테고리의 다른 글
c# 책 인터넷으로 읽어보기 (0) | 2012.09.27 |
---|---|
C#에서의 포인터 사용 (0) | 2012.09.17 |
C# static 과 상수 (0) | 2012.09.16 |
call by XXX (0) | 2012.09.16 |
프로그램과 메모리 , 스택과 힙 (1) | 2012.09.16 |