IT_Programming/C#

Const / readonly

JJun ™ 2006. 2. 27. 10:43


Const 상수는 컴파일 될 때 그 값이 결정돼서 프로그램이 시작할 때부터 끝날 때까지 메모리에
담아두고 사용한다. 클래스의 인스턴스가 생성될 때 상수를 만들고 객체가 소멸될 때 같이
메모리에서 해체하고 싶으면 readonly 키워드를 사용한다.
Const는 컴파일 할 때 값이 결정되기 때문에 선언과 동시에 값을 지정해 준다.
readonly는 객체가 생성될 대 초기화되므로 미리 그 값을 정의해줘도 되고
생성자에서 정의해줘도 된다. 하지만 생성자 이후에는 절대로 이 값을 변경할 수 없다.

 

======================================================================================

 

[const.cs]

 

/* 2/27 Const(상수처리화,읽기전용: enum과 비슷)*/
 
using System;

class Sizes
 { 
  public const int Medium = 100;
  public const int Large = 105;
  public const int XLarge = 110; //생성과 동시에 초기화를 꼭 시켜줘야함.
 }

class Shirt
{
 public static void Main()
 {
  while(true)
  {
   string s;
   Console.WriteLine("치수 기호를 입력하세요(빠져나가시려면 'q'). (M)edium (L)arge (X)Large");

   s = Console.ReadLine();
   if(s == "q") break;

   switch(s)
   {
    case "M":
     Console.WriteLine(Sizes.Medium);
     break;

    case "L":
     Console.WriteLine(Sizes.Large);
     break;
    
    case "X":
     Console.WriteLine(Sizes.XLarge);
     break;
    
    default:
     Console.WriteLine("제대로 된 치수를 입력해 주세요");
     break;
   }
   
  }
 }
}
 

 

 

[readonly.cs]

 

/* 2/27 readonly(읽기전용)*/
 
using System;

class Sizes
 { 
  public readonly int Medium = 100;
  public readonly int Large = 105;
  public readonly int XLarge;
  
  public Sizes()
  {
   this.XLarge = 110; //선언과 초기화를 동시에 할 수 있다. 단 생성자 함수에서만..
  }
 }

class Shirt
{
 public static void Main()
 {
  Sizes s = new Sizes(); //readonly를 사용할 경우 객체(인스턴스)를 생성해야 함.

  Console.WriteLine("Medium은 : " +s.Medium+ " 입니다");
  Console.WriteLine("Large는 : " +s.Large+ " 입니다");
  Console.WriteLine("XLarge는 : " +s.XLarge+ " 입니다");
 }
  
}
 

 

 

 

 


 

'IT_Programming > C#' 카테고리의 다른 글

구조체  (0) 2006.02.27
인터페이스  (0) 2006.02.27
This 키워드  (0) 2006.02.24
메서드 오버라이딩  (0) 2006.02.24
메서드 오버라이딩3 - virtual  (0) 2006.02.24