Объявление массивов в C#

Примеры объявлений массивов таковы:

int [] k; // Объявлен массив k, но не создан k=new int[10]; // Создан массив из 10 целых чисел, но не // заполнен

k[0]=l; // Первый элемент массива получил значение 0.

// Нумерация с 0 int [] z={5,6,7}; // Массив z объявлен и инициализирован // тремя значениями int [] m =new int[5]; // Массив m из 5 элементов объявлен

// и создан

int [,] w = new int[4,4]; // Двумерный массив w размером

// 4*4 объявлен и создан

Рассмотрим небольшой пример работы с массивом. Пусть требуется инвертировать одномерный массив, в котором непосредственно заданы значения элементов. Приведем программу, которая это делает (листинг 3.10).

ЛистингЗ.Ю. Инвертирование массива

using System; namespace ArrayEx

/// Summary description for Classl.

/// </summa ry> class Classl

/// <summary>

/// The main entry point for the application.

/ / / < / summa ry>

[STAThread]

static void Main(string[] args)

int [] arl={l,2,3,4,5,6,7,8,9}; // Объявляем массив,

// подлежащий инверсии int [ ] ar2=    new    int [ 9 ] ; / / В этом массиве записываем

// результат

String s="";

for (int i=arl.Length;i>0;i—)

{

ar2[9-i]=arl[i-l]; // Последний элемент массива arl // становится первым в ar2 s+=" "+ar2[9-i]; // Строка для вывода результата // последовательно

// заполняется элементами массива ar2

}

Console.WriteLine(s);

Console.ReadLine() ;

//

// TODO: Add code to start application here

При работе с массивами часто возникает необходимость получать в цикле доступ к элементам массива. Для этой цели используют цикл типа foreach. Такого цикла в Java нет. Следующий пример (листингЗ.П) осуществляет простой вывод на консоль строк, являющихся элементами строкового масси-

Листинг 3.11. Вывод элементов строкового массива

using System; namespace foreachex

/// <summary>

/// Summary description for Classl.

/// </summa ry> class Classl

static String [] strar={"one","two","three"}; // Объявляем и

/ / создаем массив строк

/// <summary>

/// The main entry point for the application.

/ / / < / summa ry>

[STAThread]

static void Main(string[] args)

foreach( String s in strar) // Организуем перебор элементов

// массива с помощью цикла // foreach

{

Console.WriteLine("The string is: "+s);

// На каждой итерации цикла получаем доступ // к очередной строке массива

}

Console.ReadLine();

//

// TODO: Add code to start application here //

}

Обратим внимание на то, что массивы передаются по ссылке. Рассмотрим пример:

int [] k= new int[2];

k[0]=l; k[l]=2; int []kk=k; kk[0]=10;

Console.WriteLine("The kk[0]="+kk[0]+" k[0]="+ k[0]);

Console.ReadLine();

В этом примере kk и k суть один и тот же массив, поскольку оператор присваивания int []kk=k присвоит переменной kk адрес переменной k, следовательно, будут выведены одни и те же значения. По ссылке также передаются объектные переменные (экземпляры классов).

Это значит, что если oM и ob2 представляют две объектные переменные, то присваивание oM=ob2 присваивает объектной переменной оЫ адрес объектной переменной ob2.

Рассмотрим теперь создание массива объектов. Как и в языке Java, процесс создания отдельного экземпляра выполняется в два этапа: сначала создаем массив с помощью конструктора, а затем создаем экземпляр класса, например:

Point [] masp= new Point[2]; masp[0]=new Point(3,14); masp[l]=new Point(5,6);

Здесь создан массив структур Point (см. разд. "Программирование «без классов»") и выполнена инициализация его элементов.

Источник: Герман О. B., Герман Ю. О., Программирование на Java и C# для студента. — СПб.: БХВ-Петербург, 2005. — 512 c.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100