이 질문에는 이미 답변이 있습니다.
C #의 속성을 읽기 전용으로 사용할 수없는 이유는 무엇입니까?
속성을 읽기 전용으로 만들려고하면 다음과 같이 표시됩니다.
이 항목에는 'readonly'한정자가 유효하지 않습니다.
Simmilar 질문은 여기에서 물었다 :속성을 읽기 전용으로 설정할 수없는 이유는 무엇입니까?그러나 질문은 5 년 전에 물었습니다. 그 때 제공된 대답은 : 그들이 그것을 생각하지 않았기 때문입니다. 5 년이 지난 지금도 그렇습니까?
편집하다: 코드 예 :
public class GreetingClass
{
public readonly string HelloText { get; set; }
}
속성은 C #에서 읽기 전용 일 수 있습니다. 구현은 readonly 키워드를 사용하지 않고 있습니다.
C #6 (VS 2015)을 사용하는 경우 생성자 또는 멤버 정의에 속성을 할당 할 수있는 다음 줄을 사용할 수 있습니다.
public int Property { get; }
이전 버전의 C #/ Visual Studio 버전을 사용하는 경우 다음과 같이 작성할 수 있으며 생성자 또는 필드 정의에 필드를 할당 할 수 있습니다.
private readonly int property;
public int Property { get { return this.property; }}
속성을 읽기 전용으로 유지하려면 getter를 다음과 같이 정의하면됩니다.
public MyProperty { get; }
밖으로 설정된 속성은 다음 속성의 읽기 전용 속성으로 간주됩니다.C#
당신은 readonly 키워드로 그것을 지정할 필요가 없습니다.
public class GreetingClass
{
private string _HelloText = "some text";
public string HelloText => _HelloText;
}
어디에서와 같이VB
다음을 지정해야합니다.Public ReadOnly Property HelloText() As String
네가 봤다면C #의 읽기 전용 속성, 당신은100 * no_of_answers_here올바른 결과.
https://msdn.microsoft.com/en-us/library/w86s7x04.aspx없는 재산set
접근자는 읽기 전용입니다. 따라서 적용하는 것이readonly
키워드는 중복성을 야기 할뿐 그 밖의 것은 없습니다.
또한 C #6.0 때까지 설정할 수 없습니다.readonly
속성을 포함하는 유형 (예 : aclass
). C #6.0에서는 최소한 초기화의 일부로 그렇게 할 수 있습니다. 이것은 C #6.0에서 가능하다는 것을 의미하며,public int Prop { get; } = 10;
그렇게하면readonly
백킹 필드가 자동으로 생성되고 속성 초기화를 위해 선택한 값으로 설정됩니다.
더 많거나 적은 C #6에서 다음과 같은 것을 사용할 수 있습니다 :
class MyClass {
string MyProp { get; }
MyClass { MyProp = "Hallo Worls"; }
}
C #6 이전에는 읽기 전용 백킹 필드를 대신 사용할 수 있습니다.
class MyClass {
private readonly string _myProp;
string MyProp { get { return this._myProp; } }
MyClass { this._myProp = "Hallo Worls"; }
}
get
/set
접근 자행동 양식. - Dmitry Bychenko