Студопедия
МОТОСАФАРИ и МОТОТУРЫ АФРИКА !!!


Авиадвигателестроения Административное право Административное право Беларусии Алгебра Архитектура Безопасность жизнедеятельности Введение в профессию «психолог» Введение в экономику культуры Высшая математика Геология Геоморфология Гидрология и гидрометрии Гидросистемы и гидромашины История Украины Культурология Культурология Логика Маркетинг Машиностроение Медицинская психология Менеджмент Металлы и сварка Методы и средства измерений электрических величин Мировая экономика Начертательная геометрия Основы экономической теории Охрана труда Пожарная тактика Процессы и структуры мышления Профессиональная психология Психология Психология менеджмента Современные фундаментальные и прикладные исследования в приборостроении Социальная психология Социально-философская проблематика Социология Статистика Теоретические основы информатики Теория автоматического регулирования Теория вероятности Транспортное право Туроператор Уголовное право Уголовный процесс Управление современным производством Физика Физические явления Философия Холодильные установки Экология Экономика История экономики Основы экономики Экономика предприятия Экономическая история Экономическая теория Экономический анализ Развитие экономики ЕС Чрезвычайные ситуации ВКонтакте Одноклассники Мой Мир Фейсбук LiveJournal Instagram

Class Classl. Одной из способностей структур, является способность содержать не только данные, но и функции




Перегрузка функций

Struct customerName

Struct customerName

Функции структур

Одной из способностей структур, является способность содержать не только данные, но и функции. На первый взгляд подобное может показаться немного странным, однако на практике это приносит много пользы.

В качестве простого примера рассмотрим следующую структуру:

{

public string firstName, lastName;

}

Если у нас имеются переменные типа customerName и нам необходимо вывести на консоль полное имя, мы будем вынуждены конструировать это имя из его составных частей. Например, для переменной типа customerName с именем customer можно использовать следующий синтаксис:

CustomerName myCastomer;

myCustomer.firstName= “John”;

myCustomer.lastName =”Franklin";

Console.WriteLine(“{0} {1}”, customer.firstName, customer.lastName);

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

{

public string firstName, lastName;

public string Name ()

{

return firstName + “ “ + lastName;

}

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

customerName myCustomer;

myCustomer.firstName = "John";

myCustomer.lastName = “Franklin";

Consо1e.WriteLine(customer.Name());

Этот синтаксис гораздо проще и понятнее, чем предшествующий. Необходимо отметить, что функция Name() имеет непосредственный доступ к полям структуры firstName и lastName. В рамках структуры customerName они могут считаться глобальными.

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

Например, ранее мы использовали следующую программу, в которой содержалась функция с именем MaxValue ().

{

static int MaxValue(int[] intArray)

{

int maxVal = intArray[0];

for (int i = 1; i < intArray.Length; i++)

{

if (intArray[i] > maxVal)

maxVal = intArray[i];




}

return maxVal;

}

static void Main (string [] args)

{

int[] myArray = {1, 8, 3, 6, 2, 5, 9, 3, 0, 2};

int maxVal = MaxValue (myArray) ;

Console.WriteLine(“The maximum value in myArray is {0}”, maxVal);

}

}

Эта функция может использоваться только для массивов значений типа int. Мы могли бы создать функции с другими именами, предназначенные для работы с параметрами других типов, переименовав вышеприведенную функцию как-нибудь вроде IntArrayMaxValue () И добавив функции наподобие DoubleArrayMaxValue () для работы с другими типами. В качестве альтернативы мы можем просто включить в нашу программу следующую функцию:

static double MaxValue (double [.] doubleArray)

{

double maxVal = doubleArray [0];

for (int i = 1; i < doubleArray.Length; i++)

{

if (doubleArray[i] > maxVal)

maxVal = doubleArray[i];

}

return max Val ;

}





Дата добавления: 2014-02-02; просмотров: 797; Опубликованный материал нарушает авторские права? | Защита персональных данных | ЗАКАЗАТЬ РАБОТУ


Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Для студента самое главное не сдать экзамен, а вовремя вспомнить про него. 10075 - | 7517 - или читать все...

Читайте также:

 

3.92.92.168 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.


Генерация страницы за: 0.002 сек.