3

이 질문에는 이미 답변이 있습니다.

C #의 속성을 읽기 전용으로 사용할 수없는 이유는 무엇입니까?

속성을 읽기 전용으로 만들려고하면 다음과 같이 표시됩니다.

이 항목에는 'readonly'한정자가 유효하지 않습니다.

Simmilar 질문은 여기에서 물었다 :속성을 읽기 전용으로 설정할 수없는 이유는 무엇입니까?그러나 질문은 5 년 전에 물었습니다. 그 때 제공된 대답은 : 그들이 그것을 생각하지 않았기 때문입니다. 5 년이 지난 지금도 그렇습니까?

편집하다: 코드 예 :

public class GreetingClass
{
    public readonly string HelloText { get; set; }
}


  • 코드를 올리시겠습니까? - sujith karivelil
  • 글쎄, 기술적으로 아무것도 그 5 년 후에 변경, 그리고 당신이 언급 한 질문에 대한 모든 대답은 여전히 최신입니다. - Andy Korneyev
  • 잘,재산에 대한 편리한 이름입니다.get/set접근 자행동 양식. - Dmitry Bychenko
  • 내 대답을 보라. C #6.0과 이전 버전을 비교합니다. C #6.0에서 상황이 조금 바뀌 었습니다. - Nikhil Vartak

5 답변


14

속성은 C #에서 읽기 전용 일 수 있습니다. 구현은 readonly 키워드를 사용하지 않고 있습니다.

C #6 (VS 2015)을 사용하는 경우 생성자 또는 멤버 정의에 속성을 할당 할 수있는 다음 줄을 사용할 수 있습니다.

public int Property { get; }

이전 버전의 C #/ Visual Studio 버전을 사용하는 경우 다음과 같이 작성할 수 있으며 생성자 또는 필드 정의에 필드를 할당 할 수 있습니다.

private readonly int property;
public int Property { get { return this.property; }}


3

속성을 읽기 전용으로 유지하려면 getter를 다음과 같이 정의하면됩니다.

public MyProperty { get; }


  • 이 작업은 모든 C #버전이나 C #6 +에서만 가능합니까? - Stralos
  • 2.0 이상에서 작동합니다. - Ovais Khatri

2

밖으로 설정된 속성은 다음 속성의 읽기 전용 속성으로 간주됩니다.C#당신은 readonly 키워드로 그것을 지정할 필요가 없습니다.

public class GreetingClass
{
    private string _HelloText = "some text"; 
    public string HelloText => _HelloText; 
}

어디에서와 같이VB다음을 지정해야합니다.Public ReadOnly Property HelloText() As String


  • 개인 변수를 통해 값을 반환 할 수 있습니다. anser에서 업데이트를 확인하십시오. - sujith karivelil

1

네가 봤다면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백킹 필드가 자동으로 생성되고 속성 초기화를 위해 선택한 값으로 설정됩니다.


0

더 많거나 적은 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"; }
}

연결된 질문


관련된 질문

최근 질문