Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 52

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 46 47 48 49 50 51 < 52 > 53 54 55 56 57 58 .. 320 >> Следующая

// Два метода, определенных как public, обращаются к частному вспоногательному методу using System; class Teenager {
Il Тип System. Random нужен для генерации случайных чисел private Random г = new RandomO:
public string ComplainO:
I
string messages = new string[5] {"Do I have to?",
"He started ill".
"I'm too tired.
"1 hate school I".
"You are soco wrong."); return messages[GetRando(rWumber(S)];
)
Определение пользовательских методов класса 111
public string BfeAgreeableO {
string[] messages * new Stnng[3] {"Sure! No problem!",
"Uh uh.".
"I guess so."}; return messages[GetRandomNumber(3)];
}
II Частная вспомогательная функция для получения случайного числа
private int GetRandomNumber(shart upperLimit)
{
Il Random. Next () возвращает случайное целочисленное число в диапазоне // между 0 и upperLimit return Г. Next{upperLimit):
}
public static void MuIiI(SViIiCi[J args) {
Il Майк, ионешь начинать жаловаться teenager mike = new Teenager!); for (int 1 = О; і < 10: і++) {
Console.WriteLineC'mike.ComplainO):
}
)
}
Результат выполнения нашей программы представлен на рис. 2.16.
D:45harpBoGk\Labs\Cruipli>f ?'-.Тс1эмцсг»Ып S> . -ial
I'm too tired... 3
I hate school! Ihe started it! d
Vou are sooo wrong. I Im it: school! Do I lmve to?
Vou are sooo wrong.
You are sooo wrong. He started it* I ¦ и too t ired. ч -
Press any key to continue zi
ГГІ r ±
Рис. 2.16. Майк жалуется (использование частного вспомогательного метода)
Преимущество выделения GetRt-indoiiiNumbpr(.) в отдельный частный вспомогательный метод заключается в том. что к этому методу теперь смогут обращаться самые разные части класса Teenager. Альтернатива такому подходу — продублировать программную логику для возвращения случайных чисел в разных местах класса. В нашем случае такое дублирование не причинит неудобств, однако представьте себе ситуацию, в которой GetRandomNumber потребовал бы десятков и сотен строк кода.
Обратимся еще к одному интересному моменту нашей программы — использованию типа System. Random. Очевидно, что этот класс используется для генерации случайных чисел. Метод Ranaox. Next О возвращает число в диапазоне между 0 и указанным верхним предельным значением. Конечно же, в классе Random имеются
112 Глава 2 Основы языка С#
и другие полезные члены, однако поскольку для рассказа о них нам придется уклониться от нашей темы, мы можем посоветовать вам обратиться к электронной документации по От
Статические методы и методы экземпляров
Как мы уже не один раз видели, методы могут быть объявлены как статические — с использованием ключевого слова static. Однако что это значит? Статический метод (static method) может быть вызван напрямую через уровень класса, без необходимости создавать хотя бы один экземпляр объекта данного класса. По этой причине метод Mai п() всегда объявляется как static — чтобы этот метод мог начать выполняться еще до создания первого экземпляра класса, в котором он определен.
Чтобы показать использование статических методов на практике, предположим, что мы определили метод Complai п() следующим образом:
//Молодеть сейчас так часто желуеіся. что создавать для этого специальные экземпляры // // объектов - лишняя работа public static string Complaint) і
stringf] messages = new string[5] {"Do I have to?".
"He started it!".
Tm too tired. .".
"I hate school!",
"You are sooo wrong."}; return messages[GetRandomNunter C 5)];
} .
Вызывать статические методы очень просто: достаточно указать вместе с именем этого метода имя класса, в котором он определен:
// Вызываем статический метод Complaint) класса Teenager
public static void Main(str1ng[] args)
'I
for int 1=0; 1 < 40; 1++)
Console.wri tet і ne (Teenager.Complа і п C)):
}
Методы экземпляров (instance methods), в отличие от статических методов, применяются на уровне экземпляров объектов. Если метод не объявлен как static, то он считается методом экземпляров по умолчанию. Для вызова метода экземпляра необходимо вначале создать объект класса, в котором определен данный метод. Затем метод вызывается через объект данного класса:
// Для вызова метода Complaint) мы должны создать экземпляр объекта класса Teenager Teenager joe = new Teenagert); Joe.Complaint);
Код приложения Teenager можно найти в подкаталоге Chapter 2.
Статические данные
Классы в С# могут содержать не только статические методы, но и статические данные — как правило, статические переменные. Чтобы лучше представить себе статические данные, вначале мы обратимся к обычным данным класса. Такие обыч-
Статические методы и методы экземпляров 113
ііьіс' данные каждый объект данного класса хранит отдельно и независимо от других объектов данного класса. Предположим, что у нас имеется следующий класс: class
{
}
Вы можете создать любое количество объектов Foo и присвоить переменной IntFoo в каждом из них индивидуальные значения:
// В каждой объекте Foo - своя копия переменной IntFoo Foo fl = new Foot): fl. IntFoo = 100;
Предыдущая << 1 .. 46 47 48 49 50 51 < 52 > 53 54 55 56 57 58 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100