새소식

인기 검색어

게임 개발/유니티

[C#] const 와 readonly

  • -

Unity C# 개발에서 constreadonly는 모두 변경 불가능한(immutable) 값을 정의하는 데 사용되지만, 그 사용법과 적용 범위에 차이가 있습니다.

1. const (Constants)

  • 정의: const는 컴파일 시간에 결정되는 상수 값을 정의합니다. 한 번 값이 할당되면, 프로그램 전체에서 그 값은 변경될 수 없습니다.

  • 사용 사례: 주로 변하지 않는 값에 사용됩니다. 예를 들어, 수학적 상수(π, e 등), 설정 값 등이 있습니다.

  • 범위: const는 기본 데이터 타입(int, float, double, string 등)과 함께 사용됩니다. 객체 참조에는 사용할 수 없습니다.

  • 컴파일 시간: const 값은 컴파일 시간에 결정되며, 다른 어셈블리에서 참조될 때 해당 값이 직접 복사됩니다.

  • 예시:

    public const float Pi = 3.14159f;

2. readonly

  • 정의: readonly는 런타임에 한 번만 할당될 수 있는 변수를 정의합니다. 이 할당은 변수 선언 시 또는 클래스의 생성자에서만 가능합니다.

  • 사용 사례: 주로 런타임에 초기화되어야 하지만 그 이후에는 변경되지 않아야 하는 값에 사용됩니다. 예를 들어, 유니티에서 게임 오브젝트의 참조, 구성 설정 값 등이 있습니다.

  • 범위: readonly는 모든 타입의 데이터(기본 데이터 타입 및 객체 참조)에 사용할 수 있습니다.

  • 런타임: readonly 변수의 값은 런타임에 할당되며, 다른 어셈블리에서 참조될 때 실제 변수에 대한 참조를 사용합니다.

  • 예시:

    public readonly GameObject myGameObject;

차이점 요약

  • 초기화 시점: const는 컴파일 시점에 초기화되고, readonly는 런타임 시점(주로 생성자 내에서)에 초기화됩니다.
  • 타입 제한: const는 값 형식과 문자열에만 사용될 수 있지만, readonly는 모든 타입에 사용될 수 있습니다.
  • 참조 방식: const는 다른 어셈블리에서 참조될 때 값이 복사되어 사용되는 반면, readonly는 참조에 의해 사용됩니다.

Unity 개발에서 이러한 특성을 이해하고 적절한 상황에 맞게 constreadonly를 사용하는 것이 중요합니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.