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

 

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

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

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

Новая разновидность класса Person class Person
{
private string full Name; private byte age;
public Personrstrinc n. a) {
full Name = n; age = a:
}
public void PrrUniou {
Console.WriteLine("{0} is {1} years old", full Name, age);
I
)
Теперь предположим, что в классе Hp? iiod з определен еще один метод, использующий ключевое слово params. Однако на этотраз мы собираемся принимать не массив целочисленных значений, а массив объектов — то есть массив, состоящий из чего угодно.
Давайте воспользуемся этой возможностью, применим ее к классу .„ ~ . z ™. Техническое задание будет такое: пусть наш метод принимает массив объектов, проверяет все объекты, и если среди них обнаруживаются объекты типа P е г s о п, то вызывается метод Pr: пі: I п(о( . для этого объекта. Объекты любого другого типа просто выводятся на системную консоль.
// Что же кие пришлют на этот раз?
public void DisplayArrayOfObjectstparams object[] list)
{
for (int 1=0; і < list.Length; 1++) {
if(11st[i] is Person) И Является ли текущий объект в пассиве
// объектом класса Person?
{ (CPerson)list[i]).PnntlnfoO: // Если да, вызываем нужный метод
Работа с массивами 119

I???
¦ Fred is 93 vears old
Il really дні an i«stars.!;e of S.yi^ijio.Sf.raiHj I
t<i. ........... ,-................, f Л ¦
Рис. 2.19. Возможности модификатора params
Как мы могли убедиться, С# предлагает миожестко средств для удобной и фективной работы с параметрами. Отдельно заметим для программистов на С и C++: в С# вы можете привязывать параметры, передаваемые методам, к ухаззте -лям (используя ключевое слово гef) без необходимости использовать не самые изящные конструкции с операторами * и &.
Код приложения MethodsAndParams можно найти в подкаталоге Chapter 2.
Работа с массивами
Массивы в С# с точки зрения синтаксиса практически не отличаются от массивов в С, С++ nJava. Однако если посмотреть на их внутреннее устройство, массив С# -это тип, производный от класса Sy s t em . Ar ray. Поэтому все массивы С# обладают общим набором членов.
Формальное определение массива выглядит так: массив — это набор элементов, доступ к которым производится с помощью числового индекса. Индексы могут держать элементы любого встроенного типа данных С#, в том числе могут существовать массивы объектов, интерфейсов и структур. В С# массивы могут быть простыми или многомерными. Массивы объявляются путем помещения квадратных скобок ([ ]) после указания типа данных для элементов этого массива, например:
// Массив символьных строк с 10 элементен {Г!,. 1.....9}
StMng[] booksOnCOM; booksOnCOM = new string[10]:
И Массив символьны- строк с 2 элементами {0. 1} string[] booksOnPLl = new String[2]:
// Массив символьных строк из 100 элементов {Л. 1. . . . 99} StMng[] booksOnDotNet = new str1ng[100];
Как мы гнідим, в первом варианте на объявление массива нам потребовалось две строки. Однако те же самые действия мы можем сделать и в одной строке (это
верно и для любых других объектов С#). Однако в любом случае для создания
массива фиксированного размера мы должны использовать ключевое слово new. Такое объявление массива приведет к ошибке компилятора:
// При определении массива фиксированного размера мы обязаны использовать // ключевое слово new
int[4] ages - {30 . 54 . 4, 10): , // Ошибка!
Помните, что размер массива задается при его создании, но не объявлении. Если мы объявляем массив фиксированного начального размера, мы обязаны использо ватъ ключевое слово new. Но если мы возлагаем обязанность по определению необ ходимого размера массива на компилятор, можно обойтись и без п ew:
120 Глава 2 • Основы языка С?
// Будет автоматически создан массив с 4 элементами. Обратите внимание на отсутствие
ключевого слова "new" и на // пустые квадратные скобки lnt[] ages - {20. 22 . 23 . 0J;
Как и во многих других языках, в С# можно производить заполнение массива, перечисляя элементы последовательно в фигурных скобках, а можно использовать для этой цели числовые индексы. Результат применения обоих вариантов будет совершенно одинаковым:
// Используем последовательное перечисление элементов нассива:
stringG firstNames - new string[5] {"Steve". "Gina". "Swallow". "Baldy". "Gunner"};
// Попользуем числовые индексы: str1ng[] firstNames = new stnng[5]: firstNames[0] - "Steve"; firstNamesEl] - "Gina"; firstNames [2] = "Swallow": firstNaraes[3] - "Baldy"; firstNames[4] - "Gunner";
Важное различие между массивами C++ и С#, о котором необходимо упомянуть, заключается в том, что в С# элементам массива автоматически присваиваются значения по умолчанию в зависимости от используемого для них типа данных. Например, для массива целых чисел всем элементам будет изначально присвоено значение 0, для массива объектов — значение NULL и т. д.
Многомерные массивы
Помимо простых массивов — массивов с одним измерением в С# поддерживаются также две основные разновидности многомерных массивов. Первую разновидность многомерных массивов иногда называют «прямоугольным массивом». Такой тип массива образуется простым сложением нескольких измерений. При этом все строки и столбцы в данном массиве будут одинаковой длины. Объявление и заполнение прямоугольного многомерного массива производится следующим образом:
Предыдущая << 1 .. 49 50 51 52 53 54 < 55 > 56 57 58 59 60 61 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100