2015-12-27 11 views

Odpowiedz

13

Nie ma łatwy sposób aby to zrobić, pozostawiając auto-właściwość w miejscu.

Jeśli nie wymagają właściwość auto, konwersji kodu do korzystania z prywatnej zmiennej i nieautomatyczny właściwość:

private List<string> membershipIds = new List<string>(); 
public List<string> MembershipIds { 
    get { return membershipIds; } 
    set { membershipIds = value; } 
} 

Jeśli nie wymagają automatycznego nieruchomość, trzeba dokonać przyporządkowania w konstruktorze:

public List<string> MembershipIds { get;set; } 
... 
// This constructor will do the assignment. 
// If you do not plan to publish no-argument constructor, 
// it's OK to make it private. 
public MyClass() { 
    MembershipIds = new List<string>(); 
} 
// All other constructors will call the no-arg constructor 
public MyClass(int arg) : this() {// Call the no-arg constructor 
    .. // do other things 
} 
public MyClass(string arg) : this() {// Call the no-arg constructor 
    .. // do other things 
} 
+1

Rewizja, ale kiedy "wymaga auto-własności"? –

+0

Łańcuchy 'this()' wymagają korekty składniowej. –

+0

@JeppeStigNielsen Dzięki, dziś rano przełączyłem się na tryb Java! Myślę, że jedyny przypadek, w którym wymagałoby się auto-własności, dotyczy standardu kodowania obejmującego całą firmę, który wymaga ich użycia. Nie mogę wymyślić technicznego powodu, aby wymagać ich użycia w stosunku do zmiennej + get/set pair. – dasblinkenlight

4

Funkcja ta nazywa wartości dla właściwości i co robi jest włożenie przypisania część do konstruktorów Twojego class.

Zmiana kodu do następujących robi to samo na polu poparcie tej nieruchomości bez potrzeby zmieniania wszystkich konstruktorów i jest obsługiwana w C# 5.0:

private List<string> mMembershipIds = new List<string>(); 

public List<string> MembershipIds 
{ 
    get 
    { 
     return mMembershipIds; 
    } 
    set 
    { 
     mMembershipIds = value; 
    } 
}