Как использовать свойства в С#?

Я не уверен, потому что в Java getter/setter выглядят немного иначе, но что значит "С# way", чтобы закодировать этот материал?

Вариант a.)

    private string name;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    private int time;

    public int Time
    {
        get { return time; }
        set { time = value; }
    }

б.)

    private string _name;
    private int _time;

    public string name
    {
        get { return _name; }
        set { _name = value; }
    }

    public int time
    {
        get { return _time; }
        set { _time = value; }
    }

с.)

   public string name {get; set;}
   public int time {get; set;}

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

Ответ 1

Как насчет d, следуя соглашениям об именах .NET:

public string Name { get; set; }
public int Time { get; set; } // Odd type for time, admittedly...

Не беспокойтесь, записывая это свойство вручную, если вы не делаете в нем что-то нетривиальное.

Если вы записываете реализацию свойства вручную, это зависит от вас, как вы называете приватную переменную. Лично я бы использовал:

private string name;
public string Name
{
    get { /* whatever */ }
    set { /* whatever */ }
}

... но если вы хотите использовать символы подчеркивания, это ваша прерогатива.

Как для заказа членов - это еще больше ваш собственный выбор. Предполагая, что вы работаете с командой, поговорите с командой и посмотрите, что такое локальное соглашение.

Ответ 2

Если вам не нужен доступ к базовым полям поддержки, то автоматически-свойства - это предлагаемый способ (C). Однако в соответствии с соглашением об именах .NET они должны быть PascalCase.

public string Name { get; set; }
public int Time { get; set; }

Ответ 3

Первые два - это только имена, которые вы должны выбрать, исходя из группы company/dev или вашего собственного решения.

Третий случай - это короткий способ декалирования того же самого свойства, где фактический field будет генерироваться самой средой выполнения.

Краткие профи: это коротко и легко.

Короткие минусы: нельзя помещать что-то внутри geter/setter, не удается установить точку останова в Visual Studio...

Надеюсь, что это поможет.

Ответ 4

В вашем конкретном случае (без логики для getter или setter) лучшим вариантом является C (при небольшом изменении имен свойств следуйте стандартам С#)

 public string Name {get; set;}
 public int Time {get; set;}

Ответ 5

В зависимости от случая, когда вы определяете поля, используется символ подчеркивания, и если вам просто нужен простой getter/setter, нет необходимости сами определять поля, потому что компилятор определит их для вас в фоновом режиме.

Ответ 6

Я бы выбрал вариант, большинство других уже опубликовано.

public string Name {get; set;}
public int Time {get; set;}

Обратите внимание, что вы можете сделать уровень защиты на уровне сеттера и получателя отдельно, например.

public string Name {get; protected set;}
protected int Time {get; private set;}

Вы можете использовать более высокую защиту, чем применяемую к свойству дыры.

Ответ 7

public string Name {get; set;}
public int Time {get; set;}