2011-01-28 16 views
48

chcę to zrobić:Właściwości C#: jak używać niestandardowej właściwości zestawu bez prywatnego pola?

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

Czy jest możliwe aby użyć pola prywatne auto generowane?
Albo jest to wymagane, aby zaimplementować to w ten sposób:

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

Istnieje wiele dobrych dyskusji na ten temat w tym SO pytanie: http://stackoverflow.com/questions/1277018/c-3-0-automatic- własności-co-to-be-the-name-of-private-variable-create –

Odpowiedz

60

Gdy chcesz zrobić coś niestandardowego w geterze lub seterze, nie możesz już używać właściwości automatycznych.

13

nie jest to możliwe. Automatycznie zaimplementowane właściwości lub niestandardowy kod.

3

Wymagane jest wdrożenie go w pełni zgodnie ze scenariuszem. Zarówno get, jak i set muszą być zaimplementowane automatycznie lub w pełni zaimplementowane razem, a nie w kombinacji z tymi dwoma.

14

Można spróbować czegoś takiego:

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

+1 Według mnie ta odpowiedź zignoruje zaakceptowaną odpowiedź. Używa właściwości auto. To jawnie ustawia seter na prywatny. Jest to dobre rozwiązanie, ponieważ pozwala użytkownikowi końcowemu lub programistce wiedzieć, że prawdopodobnie więcej dzieje się za metodą ustawiającą. – ooXei1sh

Powiązane problemy