Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
тюмгу / Лекции КБ ИБАС 1 курс 2 семестр / лекция6 Безопасность 2018.pptx
Скачиваний:
17
Добавлен:
08.12.2019
Размер:
102.56 Кб
Скачать

Массивы

Основные концепции массивов C# схожи с другими ЯП, но имеются и ряд отличий.

Пример объявления массивов:

Byte[ ] bytes = new Byte[10];

// Одномерный массив из 10 байт

String[ ] strings = new String[10];

//Массив ссылок на строки (String)

Первый массив — одномерный, содержит элементы типа Byte.

Второй массив — это одномерный массив ссылок на строки.

После объявления каждый элемент хранит нулевую ссылку.

1

Массивы в .NET — наследуются от класса Array из библиотеки классов.

Array содержит множество полезных методов.

Массивы - ссылочные типы, их элементы могут быть как ссылочными типами, так и типами со значениями.

Массивы в C# отличаются от C-подобных языков.

Примеры:

int[ ] k; //k - массив

k=new int [3]; //Определяем массив из 3-х целых

k[0]=-5; k[1]=4; k[2]=55; //Задаем элементы массива

//Выводим третий элемент массива

Console.WriteLine(k[2].ToString());

Одномерный массив определяется так:

type [ ] var;

В нашем случае:

int [ ] k;

2

Все следующие варианты неверны:

int k[ ];

int k[3];

int[3] k;

Массив - ссылочный тип,

След. для создания массива необходим вызов оператора new для

выделения необходимой памяти и

возвращении указателя на нее:

Синтаксис вызова оператора new :

var = new type [size];

В нашем случае:

k=new int [3];

Можно использовать обобщенную конструкцию :

type [ ] var = new type [size];

В нашем случае:

int[ ] k = new int [3];

3

Можно проинициализировать элементы массива сразу при объявлении (заменяет new).

Пример:

int [ ] k = {-5, 4, 55};

В C#, как и в C/C++, нумерация элементов массива идет с нуля.

Объявление многомерных массивов.\

Синтаксис обобщенного объявления двумерного массива :

type [,] var = new type [size1, size2];

Пример - объявление двумерного массива:

int[,] k = new int [3,3];

В массиве 3*3 = 9 элементов (k[0,0] - первый, k[2,2] - последний).

4

Синтаксис обобщенного объявления N-мерного массива :

type [,,,...,] var = new type [size1, size2,..., sizeN];

Пример - объявление трехмерного массива:

int[,,] k = new int [3,3,3];

Инициализация многомерного массива может иметь, например, следующий вид:

int[,] k = {{2,-2},{3,-22},{0,4}};

Массивы в C# могут быть

многомерными прямоугольными (multidimensional)

ступенчатыми, или невыровненными (jagged – буквально зубчатый).

5

Пример работы со ступенчатым массивом: int[ ][ ] k = new int [2][ ];

//Объявлен 2-мерный ступенчатый массив k[0]=new int[3];

//Объявлен 0-й элемент ступенчатого массива //Это массив из 3-х элементов

k[1]=new int[4];

//Объявлен 1-й элемент ступенчатого массива //Это массив из 4-х элементов

k[1][3]=123;

// последний элемент массива

При объявлении и работе с элементами ступенчатых массивов задается несколько пар квадратных скобок (количество равно размерности массива).

6

Операторы C#

Оператор присваивания

Сигнатура операции присваивания в C# та же, что и в С:

оператор не только присваивает,

но и возвращает присвоенное значение.

Синтаксис оператора присваивания:

var = expression;

тип переменной var должен быть совместим с типом выражения expression.

Оператор присваивания позволяет создавать

цепочку присваиваний:

var1 = var2 = var3 = ... = expression;

Такая последовательность допустима, поскольку оператор «=» присваивает переменной значение выражения, находящегося справа.

7

Пример: присвоить одно и то же значение сразу нескольким переменным:

int x, y, z;

x = y = z = -25;

//Переменным x, y, z присваивается значение -25

выражение z = -25 будет иметь значение -25,

которое присваивается переменной y,

а затем - переменной x.

Составные операторы присваивания

В ЯП C#, как и в языках C/C++, имеются

комбинированные (или составные) операторы присваивания

В них арифметические операторы совмещены с операторами присваивания.

Для всех логических операторов, требующих два операнда, также существуют комбинированные операторы присваивания.

Синтаксис операторов :

var operation = expression;

8

В результате:

+= l+r приваивается l

-= l-r приваивается l

*= l*r приваивается l

/= l/r приваивается l

%= l%r приваивается l

&= l&r приваивается l

|= l|r приваивается l

^= l^r приваивается l

Например, выражение

x = x + 10;

может быть записано как:

x += 10;

Преимущества комбинированных операторов присваивания

более компактны;

их использование позволяет ускорить компилирование кода, операнд оценивается только один раз.

9

Преобразование типа в операциях присваивания

Часто применяется присваивание значения одного типа переменной другого типа.

Например, присвоить значение типа int переменной типа float:

 

int i;

 

float f;

 

i = 1;

 

f = i;

 

Если в операции присваивании используются

 

совместимые типы данных, то тип присваемого

 

значения автоматически преобразуется в тип

 

переменной, находящейся слева.

 

Следовательно,

 

тип переменной i преобразуется в тип float,

 

затем значение переменной i присваивается переменной f.

 

C# является языком со строгим контролем типов,

 

след. не все его типы данных являются

 

совместимыми.

 

Например, несовместимы типы данных bool и int.

 

10