2015-12-27 1 views

ответ

13

Там нет простого способа чтобы сделать это, оставив авто-собственность на месте.

Если вам не требуется автоматическое свойство, преобразовать код с помощью частных переменного и неавтоматического свойства:

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

Если вам требуются автоматическое свойство, вам нужно сделать задание в конструкторе:

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

Приобретено, но когда «требуется авто-собственность»? –

+0

Цепочки 'this()' нуждаются в синтаксической коррекции. –

+0

@JeppeStigNielsen Спасибо, я сегодня утром переключился в режим Java! Я думаю, что единственный случай, когда требуется авто-собственность, - это когда есть стандарт кодирования в масштабе всей компании, требующий их использования. Я не могу думать о технической причине, требующей их использования над переменной + get/set pair. – dasblinkenlight

4

Эта функция называется значения по умолчанию для свойств и что он делает вставки назначения части к конструкторам вашего class.

Изменение кода в дальнейшем делает то же самое на заднем поле этого свойства без необходимости изменения все ваших конструкторов, и он поддерживается на C# 5.0:

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

public List<string> MembershipIds 
{ 
    get 
    { 
     return mMembershipIds; 
    } 
    set 
    { 
     mMembershipIds = value; 
    } 
} 
Смежные вопросы