Эффективность свойств

Давайте вернемся к первому примеру этой главы и попробуем оценить его эффективность:

class Test

{

private string name;

public string Name

{

get

{

return name;

}

set

{

name = value;

}

}

}

На первый взгляд такое решение выглядит неэффективным, поскольку вместо простого обращения к переменной класса в нем вызывается функция. Впрочем, ничто не мешает среде выполнения подставить (inline) функции доступа в код класса, как любые другие простые функции, поэтому выбор свойств вместо простых полей часто[1] не влияет на быстродействие программы. Пересмотр реализации без изменения интерфейса — воистину неоценимая возможность, поэтому свойства обычно являются более предпочтительным вариантом, нежели открытые переменные класса.

У свойств имеется лишь один второстепенный недостаток — они поддерживаются не всеми языками .NET, поэтому в других языках может возникнуть необходимость в непосредственном вызове функций доступа. По сравнению с использованием переменных класса этот вариант чуть более сложен.


[1] Версия .NET Runtime для Win32 выполняет подстановку тривиальных функций доступа, хотя в большинстве других платформ такая возможность не поддерживается.

Предлагаю ознакомиться с аналогичными статьями: