const & readonly

Stupidiot·2024년 9월 10일

Unity & C#

목록 보기
3/4

const(상수)

1. 정의 및 사용

  • const 키워드는 컴파일 타임 상수를 정의하는 데 사용됩니다. 즉, 프로그램이 컴파일될 때 값이 결정되고, 그 이후에는 절대로 값이 변경되지 않습니다.
  • const 필드는 반드시 초기화와 동시에 값을 설정해야 하며, 이후에는 값을 변경할 수 없습니다.
    public class Example
    {
        public const int MyConstant = 10; // 컴파일 타임 상수
    }

2. 특징

  • 컴파일 타임 상수 : 런타임에서는 수정이 불가능합니다.
  • 값 유형 : 객체나 참조 타입에 대해서는 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상수에 접근
	}
}

readonly

1. 정의 및 사용법

  • readonly 키워드는 런타임 상수를 정의하는 데 사용됩니다. 이 값은 객체가 생성되는 시점에서 초기화할 수 있으며, 이후에는 변경할 수 없습니다.
  • readonly 필드는 선언 시 초기화하거나, 생성자(constructor)에서 초기화할 수 있습니다.
    public class Example
    {
        public readonly int MyReadOnly;
    
        public Example(int initialValue)
        {
            MyReadOnly = initialValue; // 생성자에서 초기화 가능
        }
    }

2. 특징

  • 런타임 상수: readonly 필드는 런타임에 값이 설정되므로, 객체가 생성될 때마다 다르게 초기화될 수 있습니다.

reference types contain a reference to their data, a field that is a readonly reference type must always refer to the same object. That object might not be immutable.

참조 유형 가능: readonly 필드는 참조 유형(객체)에 사용할 수 있습니다. 이 경우, 객체 자체는 변경할 수 없지만, 객체의 내부 상태는 변경될 수 있습니다.

  • readonly 필드는 인스턴스 필드이거나 정적 필드일 수 있습니다.
  • 생성자에서 초기화: readonly 필드는 선언과 동시에 초기화하거나 생성자 내에서 초기화할 수 있습니다.

const vs readonly 차이점

특성constreadonly
변경 시점컴파일 타임런타임 (객체 생성 시)
초기화 방법선언 시 리터럴 값으로 초기화선언 시 또는 생성자에서 초기화
사용 가능한 타입기본 데이터 타입과 문자열만 가능모든 데이터 타입(값 유형, 참조 유형)
static 여부암시적 static선택적으로 static 가능, 인스턴스별로 다를 수 있음
변경 가능성컴파일 후 절대 변경 불가객체 생성 후 변경 불가 (생성자에서만 변경 가능)
용도변경되지 않는 고정된 값(수학적 상수 등)런타임에 결정되지만 이후 변경되지 않는 값

microsoft-readonly
microsoft-static
microsoft-const

profile
행복하세요

0개의 댓글