2016-02-27 4 views
0

Итак, после доступности автоматической реализации и инициализации свойства, мне даже нужно поле для моей собственности?Если у меня есть свойство, мне тоже нужно поле?

Это кажется намного чище:

class A { 
public int X { 
     get;set; 
    } = 1; 
} 

Чем это:

class A { 
    int x = 1; 
    public int X { 
     get { 
      return x; 
     } 
     set { 
      x = value; 
     } 
    } 
} 
+1

https://msdn.microsoft.com/en-us/library/bb384054.aspx – Steve

ответ

3

В первом случае компилятор имеет прописную y, обеспечивающее фоновое поле - это просто неявное (и ему дается имя, с которым вы не можете ссылаться в коде). Обратите внимание, что имеет как поле поддержки в сгенерированном коде, так как само свойство - это всего лишь пара методов с некоторыми связями метаданных - наличие свойства не добавляет никакого состояния к объекту. Состояние только хранится в полях.

Это даже чище, когда написано на одной линии - я обычно вижу это так:

class A 
{ 
    public int X { get; set; } = 1; 
} 
1

Вам не нужно поле подкладочный в этой ситуации, но если вы хотите, чтобы манипулировать собственности, например, с OnPropertyChanged() тогда вам необходимо заполнить поле для заполнения

public int X { 
    get { 
     return x; 
    } 
    set {   
     x = value; 
     OnPropertyChanged() 
    } 
} 
Смежные вопросы