[c#] C # 속성 : 개인 필드없이 사용자 지정 집합 속성을 사용하는 방법은 무엇입니까?

나는 이것을하고 싶다 :

public Name
{
    get;
    set
    {
        dosomething();
        ??? = value
    }
}

자동 생성 된 비공개 필드를 사용할 수 있습니까?

또는 다음과 같이 구현해야합니까?

private string name;
public string Name
{
    get
    {
        return name;
    }
    set
    {
        dosomething();
        name = value
    }
}



답변

getter 또는 setter에서 사용자 정의를 수행하려면 더 이상 자동 속성을 사용할 수 없습니다.


답변

다음과 같이 시도 할 수 있습니다.

public string Name { get; private set; }
public void SetName(string value)
{
    DoSomething();
    this.Name = value;
}


답변

이건 불가능 해. 자동 구현 속성 또는 사용자 지정 코드입니다.


답변

C # 7부터는 속성 getset접근 자에 대한 식 본문 정의를 사용할 수 있습니다 .

여기에서 더보기

private string _name;

public string Name
{
    get => _name;
    set
    {
        DoSomething();
        _name = value;
    }
}


답변

시나리오에 따라 완전히 구현해야합니다. get및 둘 다 set자동 구현되거나 둘의 조합이 아니라 함께 완전히 구현되어야합니다.


답변