Как использовать свойства в С#?
Я не уверен, потому что в 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;}