Передача вызовов конструктора с помощью this

Передача вызовов конструктора с помощью this

Другим вариантом использования ключевого слова this является такая реализация вызова одним конструктором другого, при которой не возникает избыточной логики инициализации члена. Рассмотрим следующую модификацию класса Employee.

public class Employee {

 …

 public Employee(string fullName, int empID, float currPay) {

  this.fullName = fullName;

  this.empID = empID;

  this.currPay = currPay;

 }

 // Если пользователь вызовет этот конструктор, то

 // передать вызов версии с тремя аргументами.

 public Employee(string fullName) : this(fullName, IDGenerator.GetNewEmpID(), 0.0F) {}

 …

}

Эта итерация класса Employee определяет два пользовательских конструктора, и второй из них имеет единственный параметр (имя индивидуума). Однако для построения полноценного нового Employee вы хотите гарантировать наличие соответствующего ID и значения зарплаты. Предположим, что у вас есть пользовательский класс (IDGenerator) со статическим методом GetNewEmpID(), тем или иным образом генерирующим ID нового работника. Собрав множество начальных параметров, вы передаете запрос создания объекта конструктору с тремя аргументами.

Если не передавать вызов, то придется добавить в каждый конструктор избыточный программный код.

// currPay автоматически приравнивается к 0.0F через значения,

// заданные по умолчанию.

public Employee(string fullName) {

 this.fullName = fullName;

 this.empID = IDGenerator.GetNewEmpID();

}

Следует понимать, что использование ключевого слова this для передачи вызовов конструктора не является обязательным. Однако при использовании этого подхода вы получаете более удобное и более краткое определение класса. Фактически, используя этот подход, вы можете упростить свои программистские задачи, поскольку реальная работа делегируется одному конструктору (обычно это конструктор, который имеет наибольшее число параметров), а остальные конструкторы просто перекладывают ответственность.

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

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

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

Кэшируем цепочки вызовов

Из книги Разгони свой сайт автора Мациевский Николай

Кэшируем цепочки вызовов Распознавание (разрешение) ссылки на объект или метод выполняется каждый раз, когда происходит обращение к этому объекту или методу. Переменные разрешаются всегда в обратном порядке: от более частной области видимости к более общей. Поэтому,


Передача денег с помощью Skype

Из книги Skype: бесплатные звонки через Интернет. Начали! автора Гольцман Виктор Иосифович

Передача денег с помощью Skype Эта функция Skype заключается в возможности выполнения денежного перевода средствами программы с помощью системы PayPal. Вы можете переслать деньги любому пользователю Skype из вашего списка контактов. Такая функция может быть полезной, например,


R.12.3.1 Преобразование с помощью конструктора

Из книги Справочное руководство по C++ автора Страустрап Бьярн

R.12.3.1 Преобразование с помощью конструктора Конструктор, имеющий единственный параметр, задает преобразование типа своего фактического параметра в тип его класса, например:class X { //…public: X(int); X(const char*, int = 0);};void f(X arg) { X a = 1; // a = X(1); X b = "Jessie"; // b = X("Jessie",0) a = 2; // a = X(2) f(3); //


Параметры конструктора для атрибутов

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

Параметры конструктора для атрибутов Мы видим, что атрибут [Obsolete] может принимать нечто похожее на параметр конструктора. Если вы посмотрите на формальное определение атрибута [Obsolete] в окне определения программного кода Visual Studio 2005, то увидите, что данный класс


Использование конструктора представлений для создания объединений

Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри П

Использование конструктора представлений для создания объединений Поскольку создание объединений может составлять самую сложную часть запросов, особенно когда задействовано более двух таблиц, неплохо было бы при создании таких запросов иметь некоторое подспорье. К


Передача файлов с помощью различных служб

Из книги Популярный самоучитель работы в Интернете автора Кондратьев Геннадий Геннадьевич

Передача файлов с помощью различных служб Передача файлов может осуществляться с помощью разных интернет-служб.– Во-первых, пересылать файлы по Интернету можно с помощью программ электронной почты в качестве приложений к письмам. Этот вопрос мы рассмотрим в третьей


Оптимизация вызовов

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

Оптимизация вызовов На уровнях 2 и 3 неизбежно использование явных вызовов процедуры подобных my_polygon.set_size (5) для изменения значения атрибута. Существует опасение, что использование такого стиля на уровне 4 негативно скажется на производительности. Тем не менее компилятор


Цепочка вызовов

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард

Цепочка вызовов Обсуждая механизм обработки исключений, полезно иметь ясную картину последовательности вызовов, приведших в итоге к исключению. Это понятие уже появлялось при рассмотрении механизма языка Ada. Рис. 12.1.  Цепочка вызововПусть r0 будет корневой процедурой


16.6. Семантика вызовов

Из книги Сетевые средства Linux автора Смит Родерик В.

16.6. Семантика вызовов В листинге 15.24 мы привели пример клиента интерфейса дверей, повторно отсылавшего запрос на сервер при прерывании вызова door_call перехватываемым сигналом. Затем мы показали, что при этом процедура сервера вызывается дважды, а не однократно. Потом мы


9.2. Создание безопасного при исключениях конструктора

Из книги Microsoft Access 2007 автора Днепров Александр Г.

9.2. Создание безопасного при исключениях конструктора ПроблемаВаш конструктор должен обеспечить базовые и строгие гарантии безопасности исключений. См. обсуждение, которое следует за определением «базовых» и «строгих» гарантий.РешениеИспользуйте в конструкторе блоки


Настройка полей таблицы в режиме конструктора

Из книги Access 2002: Самоучитель автора Дубнов Павел Юрьевич

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


Создание таблицы в режиме конструктора

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

Создание таблицы в режиме конструктора Описанная в предыдущем разделе таблица создавалась, можно сказать, стихийно. Теперь мы будем придерживаться строгой последовательности действий, заблаговременно обосновывая все дальнейшие операции, задавая необходимые данные и


Работа в режиме конструктора

Из книги Цифровая фотография. Трюки и эффекты автора Гурский Юрий Анатольевич

Работа в режиме конструктора Использовать конструктор форм целесообразно для создания форм, которые не просто содержат комбинацию полей из разных таблиц, но включают какие-то уникальные элементы, причем не обязательно связанные напрямую с исходными полями. Например, в


Урок № 67. Передача собственных материалов в переработку на сторону и передача продукции из давальческого сырья

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

Урок № 67. Передача собственных материалов в переработку на сторону и передача продукции из давальческого сырья В процессе производственной деятельности предприятия часто приходится осуществлять передачу собственных материалов стороннему переработчику для выпуска


Передача изображений на компьютер с помощью программ

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

Передача изображений на компьютер с помощью программ Копировать изображения с камеры с помощью Проводника Windows не всегда удобно. Гораздо лучше делать это, используя приложение для работы с цифровыми изображениями – программу просмотра или графический редактор. Такие