Хорошо ли делать резервное свойство/поле виртуальным? [закрыто]C#

Место общения программистов C#
Ответить
Anonymous
 Хорошо ли делать резервное свойство/поле виртуальным? [закрыто]

Сообщение Anonymous »

У меня есть производный класс с именем Developer, который наследуется от базового класса с именем Сотрудник.
В моем производном классе у меня есть свойство 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;
}
}
}
Вариант 2. Поместите резервное свойство как защищенное виртуальное.

Код: Выделить всё

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;
При использовании _name запрос SQL выполняется один раз.

Подробнее здесь: https://stackoverflow.com/questions/793 ... as-virtual
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»