Российский Государственный Технологический Университет им. К.Э. Циолковского
Опубликован: 02.03.2007 | Доступ: свободный | Студентов: 5636 / 790 | Оценка: 3.96 / 3.45 | Длительность: 27:04:00
ISBN: 978-5-9556-0086-4
Лекция 5:

Массивы

< Лекция 4 || Лекция 5: 12345 || Лекция 6 >

Value Type и Reference Type. Два типа массивов

Рассмотрим следующее объявление:

MyType[] myArray = new MyType[10];

Результат выполнения этого оператора зависит от того, что собой представляет тип MyType.

Возможны всего два варианта: MyType может быть типом-значением или типом-ссылкой.

Если это тип-значение, результатом выполнения оператора будет массив, содержащий 10 объектов MyType с предопределенными значениями.

Если MyType является ссылочным типом, то в результате выполнения данного оператора будет создан массив из 10 элементов типа "ссылка", каждый из которых будет проинициализирован пустой ссылкой – значением null.

Доступ к элементам массива реализуется в соответствии с правилом индексации – по каждому измерению индексация осуществляется с НУЛЯ до n–1, где n – количество элементов размерности.

Встроенный сервис по обслуживанию простых массивов

При работе с массивами следует иметь в виду одно важное обстоятельство.

В .NET ВСЕ массивы происходят от ОДНОГО общего (базового) класса Array. Это означает, что ВСЕ созданные в программе массивы обеспечиваются специальным набором методов для создания, управления, поиска и сортировки элементов массива. К числу таких методов и свойств, в частности, относятся следующие свойства:

public int Length {get;}

Возвращает целое число, представляющее общее количество элементов во всех измерениях массива.

public int Rank {get;}

Возвращает целое число, представляющее количество измерений массива.

И методы:

public static Array CreateInstance(Type, int, int);

Статический метод (один из вариантов), создает массив элементов заданного типа и определенной размерности:

public int GetLength (int dimension);

Возвращает количество элементов заданной параметром размерности:

public void SetValue(object, int, int);

Присваивает элементу массива значение, представленное первым параметром (один из вариантов):

public object GetValue(int, int);

Извлекает значение из двумерного массива по индексам (один из вариантов):

using System;
public class DemoArray  
{

public static void Main()  
{
// Создали и проинициализировали двумерный массив строк.
Array myArray=Array.CreateInstance( typeof(String), 2, 4 );
myArray.SetValue( "Вышел ", 0, 0 );
myArray.SetValue( "Месяц, ", 0, 1 );
myArray.SetValue( "из", 0, 2 );
myArray.SetValue( "тумана,", 0, 3 );
myArray.SetValue( "вынул", 1, 0 );
myArray.SetValue( "ножик", 1, 1 );
myArray.SetValue( "из", 1, 2 );
myArray.SetValue( "кармана.", 1, 3 );

// Показали содержимое массива.
Console.WriteLine( "The Array contains the following values:" );
for ( int i = myArray.GetLowerBound(0); i <= myArray.GetUpperBound(0); i++ )
for ( int j = myArray.GetLowerBound(1); j <= myArray.GetUpperBound(1); j++ )
Console.WriteLine( "\t[{0},{1}]:\t{2}", i, j, myArray.GetValue( i, j ) );
}
}

Элементы массива массивов (jagged array) на одном и том же уровне могут иметь разные размеры. На этих массивах функция GetLength() и свойство Rank показывают результаты, аналогичные простым одномерным массивам.

< Лекция 4 || Лекция 5: 12345 || Лекция 6 >
kewezok kewezok
kewezok kewezok
Елена Шляхт
Елена Шляхт
Объясните плиз в чем отличие а++ от ++а
Почему результат разный?
int a=0, b=0;
Console.WriteLine(a++); //0
Console.WriteLine(++b); //1
a++;
++b;
Console.WriteLine(a); //2
Console.WriteLine(b); //2