Unity에서 init 키워드를 사용할 수 있는 이유가 무엇인가요?

유니티는 C#의 9.0 버전까지 지원하지만, 아래 사진과 같이 일부 기능은 지원하지 않습니다.


사진 출처

그런데 한 일본 분의 블로그 글(해당 글은 일문으로 되어 있습니다)을 보게 되었습니다. 적힌 코드를 유니티 프로젝트 안에 넣기만 하면 맨날 못 쓴다고 비주얼 스튜디오가 화내던 init 키워드를 사용할 수 있었습니다.

namespace System.Runtime.CompilerServices { 
    internal sealed class IsExternalInit { }
}

이 세 줄만 넣어도요!

해당 코드의 역할이 무엇인지, 그리고 이게 가능한 이유가 무엇인가요?

2 Likes

init 키워드는 c# 9 사양으로 포함된 기능으로, .net에서 이를 구현하는 방법이 IsExternalInit이라는 이름의 더미 클래스를 정의하는 것입니다. 해당 클래스는 .net 5.0부터 포함되어 있습니다.

유니티는 .net framework로부터 파생된 mono 기반이기 때문에 IsExternalInit 클래스가 포함되어 있지는 않지만, 공식 문서에서 설명하다시피 해당 타입을 직접 선언해줌으로써 사용할 수 있는 것입니다.

3 Likes

아하, 답변 감사합니다!