Chce to zrobić:
public Name
{
get;
set
{
dosomething();
??? = value
}
}
Czy można użyć automatycznie generowanego pola prywatnego?
Czy jest wymagane, żebym to zaimplementował w ten sposób:
private string name;
public string Name
{
get
{
return name;
}
set
{
dosomething();
name = value
}
}
c#
properties
Peterdk
źródło
źródło
Odpowiedzi:
Gdy zechcesz zrobić cokolwiek niestandardowego w programie pobierającym lub ustawiającym, nie możesz już używać właściwości automatycznych.
źródło
Możesz spróbować czegoś takiego:
public string Name { get; private set; } public void SetName(string value) { DoSomething(); this.Name = value; }
źródło
private set
uniemożliwiłoby ustawienie właściwości przez elementy członkowskie jego klasy; byłby tylko do odczytu. Byłbyś w stanie ustawić jego dane tylko w konstruktorze.To jest niemożliwe. Właściwości zaimplementowane automatycznie lub kod niestandardowy.
źródło
Począwszy od C # 7, można użyć definicji treści wyrażeń dla właściwości
get
i metodset
dostępu.Zobacz więcej tutaj
private string _name; public string Name { get => _name; set { DoSomething(); _name = value; } }
źródło
Wymagane jest, abyś wdrożył go w pełni, biorąc pod uwagę swój scenariusz. Obie
get
iset
muszą być zaimplementowane automatycznie lub w pełni zaimplementowane razem, a nie ich kombinacja.źródło