Давайте вернемся к первому примеру этой главы и попробуем оценить его эффективность:
class Test
{
private string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
}
На первый взгляд такое решение выглядит неэффективным, поскольку вместо простого обращения к переменной класса в нем вызывается функция. Впрочем, ничто не мешает среде выполнения подставить (inline) функции доступа в код класса, как любые другие простые функции, поэтому выбор свойств вместо простых полей часто[1] не влияет на быстродействие программы. Пересмотр реализации без изменения интерфейса — воистину неоценимая возможность, поэтому свойства обычно являются более предпочтительным вариантом, нежели открытые переменные класса.
У свойств имеется лишь один второстепенный недостаток — они поддерживаются не всеми языками .NET, поэтому в других языках может возникнуть необходимость в непосредственном вызове функций доступа. По сравнению с использованием переменных класса этот вариант чуть более сложен.
[1] Версия .NET Runtime для Win32 выполняет подстановку тривиальных функций доступа, хотя в большинстве других платформ такая возможность не поддерживается.
0 коммент.:
Отправить комментарий