Внутреннее представление свойств в C#

Внутреннее представление свойств в C#

Многие программисты (особенно те, которые привыкли использовать C++) стремятся использовать традиционные префиксы get_ и set_ для методов чтения и модификации (например, get_FullName() и set_FullName()). Против самого соглашения возражений нет. Однако следует знать, что "за кадром" свойства в C# представляются программным кодом CIL, использующим такие же префиксы. Например, если открыть компоновочный блок Employees.exe с помощью ildasm.exe, вы увидите, что каждое свойство XXX на самом деле сводится к скрытым методам get_XXX()/set_XXX() (рис. 4.6).

Рис. 4.6. Отображение свойств XXX в скрытые методы get_XXX() и set_XXX()

Предположим теперь, что тип Employee имеет частный член-переменную с именем empSSN для представления номера социальной страховки работника. Эта переменная устанавливается через параметр конструктора, а для управления этой переменной используется свойство SocialSecurityNumber.

// Добавление поддержки нового поля, представляющего SSN-код.

public class Employee {

 …

 // Номер социальной страховки (SSN).

 private string empSSN;

 public Employes (string fullName, int age, int empID, float currPay, string ssn) {

  …

  this.empSSN = ssn;

 }

 public string SocialSecurityNumber {

  get { return empSSN; }

  set { empSSN = value; }

 }

 public void DisplayStats() {

  …

  Console.WriteLine("SSN: {0} ", empSSN);

 }

}

Если бы вы также определили два метода get_SocialSecurityNumber() и set_SocialSecurityNumber(), то получили бы ошибки компиляции.

// Свойство в C# отображается в пару методов get_/set_.

public class Employee {

 // ОШИБКА! Уже определены самим свойством!

 public string get_SocialSecurityNumber() { return empSSN; }

 public void set_SocialSecurityNumber(string val) { empSSN = val; }

}

Замечание. В библиотеках базовых классов .NET всегда отдается предпочтение свойствам типа (в сравнении с традиционными методами чтения и модификации). Поэтому, чтобы строить пользовательские типы, которые хорошо интегрируются с платформой .NET, следует избегать использования традиционных методов get и set.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

ОПЫТЫ: Внутреннее расследование

Из книги Журнал «Компьютерра» № 39 от 24 октября 2006 года автора Журнал «Компьютерра»

ОПЫТЫ: Внутреннее расследование Автор: Сергей ЛеоновСегодня мы займемся варварским делом — разборкой одной из современных цифровых фотокамер. Не слишком часто удается разобрать до винтика подобную технику, но раз уж такая возможность представилась, почему бы не


ГЛАВА 4. ВНУТРЕННЕЕ ПРЕДСТАВЛЕНИЕ ФАЙЛОВ

Из книги Архитектура операционной системы UNIX автора Бах Морис Дж

ГЛАВА 4. ВНУТРЕННЕЕ ПРЕДСТАВЛЕНИЕ ФАЙЛОВ Как уже было замечено в главе 2, каждый файл в системе UNIX имеет уникальный индекс. Индекс содержит информацию, необходимую любому процессу для того, чтобы обратиться к файлу, например, права собственности на файл, права доступа к


СРЕДНЕЕ ЗВЕНО: Внутреннее перепрограммирование

Из книги Журнал "Компьютерра" №760 автора Журнал «Компьютерра»

СРЕДНЕЕ ЗВЕНО: Внутреннее перепрограммирование Автор: Владимир ГуриевЛюбое изменение рубрикатора заслуживает объяснения - "А это зачем вы картину повесили?" "А она не просто так висит, а дырку на стене закрывает", - однако, как правило, мы им пренебрегаем, полагая, что


Внутреннее представление индексаторов типов

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Внутреннее представление индексаторов типов Мы рассмотрели примеры метода индексатора в C#, и пришло время выяснить, как представляются индексаторы в терминах CIL. Если открыть числовой индексатор типа Garage, то будет видно, что компилятор C# создает свойство Item, которое


Внутреннее представление перегруженных операций

Из книги Photoshop CS3: Обучающий курс автора Тимофеев Сергей Михайлович

Внутреннее представление перегруженных операций Подобно любому элементу программы C#, перегруженные операции представляются специальными элементами синтаксиса CIL. Откройте, например, компоновочный блок OverloadedOps.exe с помощью ildasm.exe. Как показано на рис. 9.1, перегруженные


Внутреннее представление пользовательских подпрограмм преобразования

Из книги Программирование для карманных компьютеров автора Волков Владимир Борисович

Внутреннее представление пользовательских подпрограмм преобразования Как и в случае перегруженных операций, те методы, которые обозначены ключевыми словами implicit или explicit, получают "специальные имена" в терминах CIL: op_Implicit и op_Explicit соответственно (рис. 9.2). Рис. 9.2.


Inner Glow (Внутреннее свечение)

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Inner Glow (Внутреннее свечение) Эффект Inner Glow (Внутреннее свечение), аналогично эффекту внутренней тени, позволяет задать свечение элемента по внутреннему его контуру. Во всем остальном его действие совпадает с действием эффекта Outer Glow (Внешнее свечение) (рис. 8.13). Рис. 8.13.


Внутреннее устройство Pocket PC

Из книги 1С: Бухгалтерия 8 с нуля. 100 уроков для начинающих автора Гладкий Алексей Анатольевич

Внутреннее устройство Pocket PC Если не брать в расчет сам факт миниатюрности и отсутствие некоторых привычных на настольном ПК устройств, таких как клавиатура и мышь, то можно считать, что Pocket PC является полноценным компьютером. Мало того, по своим параметрам он является


Внутреннее соединение

Из книги Разработка ядра Linux автора Лав Роберт

Внутреннее соединение Следующий оператор соединяет две таблицы, которые связаны через внешний ключ FK правой таблицы (Table2) и первичный ключ PK таблицы Table1:SELECTТаblе1.PK,Table1.COL1,Table2.PKX,Table2.COLXFROM Table1 INNER JOIN Table2ON Table1.PK = Table2.FKWHERE... условия-поискаЭто спецификация внутреннего


Внутреннее устройство технологии

Из книги Священные войны мира FOSS автора Федорчук Алексей Викторович

Внутреннее устройство технологии Когда любой запрос вызывает хранимую процедуру, то текущее определение этой хранимой процедуры копируется в этот момент в кэш метаданных. В Классическом сервере эта копия присутствует в течение всего времени пользовательского


Урок № 61. Внутреннее перемещение ТМЦ

Из книги Написание скриптов для Blender 2.49 автора Anders Michel

Урок № 61. Внутреннее перемещение ТМЦ Одной из распространенных операций складского учета является операция по внутреннему перемещению товарно-материальных ценностей внутри предприятия. В этом случае перемещаемые ценности не покидают пределы предприятия, а лишь


Урок № 75. Внутреннее перемещение основных средств

Из книги автора

Урок № 75. Внутреннее перемещение основных средств Перемещение объектов основных средств внутри предприятия – это операция, встречающаяся довольно-таки часто. Например, токарный станок может передаваться из производственного цеха в сборочный, оргтехника из отдела


Внутреннее представление переменной jiffies

Из книги автора

Внутреннее представление переменной jiffies Переменная jiffies исторически всегда представлялась с помощью типа unsigned long и, следовательно, имеет длину 32 бит для 32-разрядных аппаратных платформ и 64 бит для 64-разрядных. В случае 32-разрядного значения переменной jiffies и частоты