2017-11-23 9 views
-5

개체를 구성 할 때 초기화 순서는 다음과 같습니다.
1. 필드에 기본값이 제공됩니다 (예 : 참조 유형에 대해 "null"값이 제공됨). , 숫자 값 "0"이 주어짐)
2. 그러면 생성자가 호출됩니다. 매개 변수없는 생성자가있는 경우 매개 변수를 사용하여 개인 필드를 초기화하는 방법은 무엇입니까? (필자는 필드가 이미 기본값으로 초기화되었다고 가정합니다. 왜냐하면 "readonly"이므로 일단 값이 주어지면 값을 수정해서는 안됩니다.)
내가 잘못하면 저를 시정하십시오.개체의 필드에 대한 C#의 readonly 키워드

+1

질문이 무엇인지 분명하지 않습니다. int type {get; 대신에 [mcve] – UnholySheep

+0

int type = 0을 사용하여 설명하십시오. 세트; } – jdweng

+0

아마도 여기 [C# MSDN 읽기 전용 속성] (https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/readonly)을 다시 한 번 읽어 볼 수 있습니다 ..'Good Luck ' – MethodMan

답변

3

간단히 말해서 readonly은 건설 후 설정 될 수 없다는 의미입니다 (적어도 부정 행위가없는 것은 아닙니다). 필드 이니셜 라이저 에 생성자가 지정한 값을 둘 다 지정하면 충돌이 발생하지 않습니다.

실제로 : readonly은 거짓말이며 게임을 잘하면 실행됩니다. 는 C# 언어 사양에 따라

3

:

섹션 10.5.2 읽기 전용 필드 전계 선언 판독 전용 개질제를 포함 선언에 의해 도입 된 필드 읽기 전용 필드이다. 읽기 전용 필드에 대한 직접 할당은 해당 선언의 일부인 또는 같은 클래스의 인스턴스 생성자 또는 정적 생성자에서만 발생할 수 있습니다. (판독 전용 필드는 이러한 맥락에서 여러 번에 할당 될 수있다.) 특히, 판독 전용 필드에 직접 할당 만 허용되는 다음과 같은 상황에서 : 필드 도입 가변 선언자에서

  • (하여 선언에 변수 초기화자를 포함).
  • 인스턴스 필드의 경우 필드 선언이 포함 된 클래스의 인스턴스 생성자에서; 정적 필드의 경우 필드 선언이 포함 된 클래스의 고정자 생성자에 있습니다. 이 은 읽기 전용 필드를 out 또는 ref 매개 변수로 전달하는 것이 유효한 유일한 컨텍스트이기도합니다.

그래서 기본적으로, 당신은 생성자에서 읽기 전용 필드를 초기화 할 수 있습니다.