Как использовать свойства В C#?
Я не уверен, потому что в Java getter/setter выглядят немного по-другому, но что такое "c# way" для кода этого материала?
а.) private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private int time;
public int Time
{
get { return time; }
set { time = value; }
}
b.)
private string _name;
private int _time;
public string name
{
get { return _name; }
set { _name = value; }
}
public int time
{
get { return _time; }
set { _time = value; }
}
c.)
public string name {get; set;}
public int time {get; set;}
Ok есть несколько примеров. Что может выглядеть лучше? Должен ли я сначала написать все объявления частных переменных, а затем Свойства или я должен сгруппировать объявление переменной и свойства рядом друг с другом.
7 ответов
Как насчет d, следуя соглашениям об именах .NET:
public string Name { get; set; }
public int Time { get; set; } // Odd type for time, admittedly...
Не трудитесь писать свойство вручную самостоятельно, если вы не делаете что-то нетривиальное в нем.
Если вы do напишите реализацию свойства вручную, это зависит от вас, как вы называете закрытую переменную. Лично я бы использовал:
private string name;
public string Name
{
get { /* whatever */ }
set { /* whatever */ }
}
... но если вы хотите использовать подчеркивания, это ваша прерогатива.
Что касается заказа членов-это еще больше ваш собственный выбор. Предполагая, что вы работаете с командой, поговорите с командой и посмотрите, что такое местная конвенция.
Если вам не нужен доступ к базовым полям поддержки, то авто-свойства-это предлагаемый способ (C). Однако в соответствии с Соглашением об именах .NET они должны быть PascalCase.
public string Name { get; set; }
public int Time { get; set; }
первые два просто convensions именования что вы должны выбрать на основе компании / dev group или вашего собственного решения.
третий случай-это короткий способ декальринга то же свойство, где фактически field
будет генерироваться самой средой выполнения.
Короче Плюсы: это коротко и легко.
короче минусов: не могу поставить что-то внутри geter / setter, не может поставить точку останова в Visual Studio...
надеюсь, что это помогает.
в вашем конкретном случае (без логики на геттере или сеттере) лучшим вариантом является C
(с небольшим изменением имен свойств, чтобы следовать стандартам C#)
public string Name {get; set;}
public int Time {get; set;}
зависит от случая, когда вы определяете поля, используется символ подчеркивания, и если вам просто нужен простой геттер/сеттер, нет необходимости определять поля самостоятельно, потому что компилятор определит их для вас в фоновом режиме.
Я бы пошел на вариант, большинство других уже размещенные.
public string Name {get; set;}
public int Time {get; set;}
обратите внимание, что вы можете изменить уровень защиты на сеттере и геттере индивидуально, например
public string Name {get; protected set;}
protected int Time {get; private set;}
вы можете использовать только более высокую защиту, чем применяется к свойству отверстия.