Что просто получить; задавать; в классе значит? - PullRequest
2 голосов
/ 28 октября 2010

Возьмите, например, следующий код из класса:

public class Employee : IEntity
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int EmployeeID { get; set; }
}

public class Company : IEntity
{
    public string Name { get; set; }
    public string TaxID { get; set }
}

Я всегда использовал get;и установить;с чем-то в скобках.Я никогда не оставлял их такими.

Пишу просто:

get;set;

Что это значит?

Ответы [ 3 ]

8 голосов
/ 28 октября 2010

Автоматически реализуемые свойства

В C # 3.0 и более поздних версиях автоматически реализуемые свойства делают объявление свойства более кратким, когда в средствах доступа к свойствам не требуется дополнительная логика.Они также позволяют клиентскому коду создавать объекты.Когда вы объявляете свойство, как показано в следующем примере, компилятор создает частное анонимное вспомогательное поле, к которому можно получить доступ только через методы доступа get и set свойства.

3 голосов
/ 28 октября 2010

Это так называемые автоматически реализуемые свойства:

http://msdn.microsoft.com/en-us/library/bb384054.aspx

Компилятор сгенерирует вспомогательное поле, похожее на этот код:

public class Company : IEntity
{
    public string Name
    {
      get { return _Name; }
      set { _Name = value; }
    }
    private string _Name;
}

Это былорешил, что этот синтаксис можно сделать намного короче, но при этом сохранить все ту же утилиту, отсюда и появились Auto-реализуемые свойства:)

1 голос
/ 28 октября 2010

Просто посмотрите на это как на быстрый и простой способ C # дать вам разрешение на чтение и чтение переменной.

Одна из хороших вещей C #, если вы спросите меня.

Другие ответы в значительной степени рассказывают вам все остальное, что нужно знать об автоматической настройке.Хотя эти две цитаты кажутся несколько противоречивыми:

CD говорит:

В C # 3.0 и более поздних версиях автоматически реализуемые свойства делают объявление свойства более кратким , когда нет дополнительной логикитребуется в свойствах доступа.Они также позволяют клиентскому коду создавать объекты.Когда вы объявляете свойство, как показано в следующем примере, компилятор создает частное анонимное вспомогательное поле, к которому можно получить доступ только через методы доступа get и set свойства.

Хотя Мерлин Морган-Грэм сказал:

Это так называемые автоматически реализуемые свойства:

http://msdn.microsoft.com/en-us/library/bb384054.aspx

Компилятор сгенерирует вспомогательное поле, похожее на этот код:

public class Company : IEntity {
    public string Name
    {
      get { return _Name; }
      set { _Name = value; }
    }
    private string _Name; }

Было решено, что этот синтаксис можно сделать намного короче, , но при этом сохранить все ту же утилиту , отсюда и появились автоматически реализуемые свойства:)

Мне кажется, что CD сказал, что это создает условие, в то время как Мерлин Морган-Грэм сказал, что их нет.

Я думаю, что CD является правильным, когда говорится, что вы можете использовать дольше, например, сеттерыразрешение в качестве ответа также может изменить все, что пишет.

private int x = 3;

public int _x { get; set /*Change x*/; }

Для этого вам нужно будет использовать обычную конструкцию get set

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...