В моем производном классе у меня есть свойство override , который использует явное вспомогательное поле, полученное из базового класса.
Код: Выделить всё
public class Developer : Employee
{
protected override string Name
{
get
{
if (_name == null)
{
string a = …;
string b = …;
string c = Query("SELECT col1 FROM table1");
_name = a + b + c;
}
return _name;
}
}
}
Какой вариант лучше?
Вариант 1: Поместите резервное поле как защищенное.
Код: Выделить всё
public class Employee
{
protected string _name = null;
protected virtual string Name
{
get
{
if (_name == null)
{
string a = …;
string b = …;
string c = Query("SELECT col2 FROM table2");
_name = a + a + b + b + c + c;
}
return _name;
}
}
}
Код: Выделить всё
public class Employee
{
protected virtual string _name { get; set; } = null;
protected virtual string Name
{
get
{
if (_name == null)
{
string a = …;
string b = …;
string c = Query("SELECT col2 FROM table2");
_name = a + a + b + b + c + c;
}
return _name;
}
}
}
Пример:
Код: Выделить всё
string hiMessage = "Hi " + Name;
string welcomeMessage = "Welcome " + Name;
Подробнее здесь: https://stackoverflow.com/questions/793 ... as-virtual
Мобильная версия