Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Синтаксис C#.doc
Скачиваний:
2
Добавлен:
11.09.2019
Размер:
109.57 Кб
Скачать
  1. Операторы

В таблице приведен список операторов и помечены те из них, которые можно перегрузить:

Вид оператора

Название

Пример

Перегружаем?

Первичные

Группировка

(a+b)

Нет

Доступ

A.B

Нет

Доступ к элементу структуры

A->B

Нет

Вызов метода

f(x)

Нет

Постинкремент

c++

Да

Постдекремент

c--

Да

Вызов конструктора

c=new Coord();

Нет

Создание массива на стеке

int* c = stackalloc int[10]

Нет

Размер структуры

sizeof (int)

Нет

Включение режима проверки переполнения

checked {byte c = (byte) d;}

Нет

Выключение режима проверки переполнения

unchecked {byte c = (byte) d;}

Нет

Унарные (с одним операндом)

Положительное значение

+10

Нет

Отрицательное значение

-10

Нет

Отрицание

!(c==d)

Да

Побитовое отрицание

~(int x)

Да

Прединкремент

++c

Да

Преддекремент

--c

Да

Преобразование типа

(myType)c

Нет

Присваивание адреса

int* c = d;

Нет

Взятие адреса значения

int* c = &d;

Нет

Выяснение типа Совместимость типа

a is String

Нет

Получение класса, описывающего тип

typeof (int)

Нет

Арифметические

Умножение

c * d

Да

Деление

c / d

Да

Остаток

c % d

Да

Сложение

c + d

Да

Вычитание

c - d

Да

Побитовый сдвиг вправо

c >> 3

Да

Побитовый сдвиг влево

c << 3

Да

Логические и операции сравнения

Меньше чем

c < d

Да

Больше чем

c > d

Да

Меньше или равно

c <= d

Да

Больше или равно

c >= d

Да

Равно

c == d

Да

Не равно

c != d

Да

Побитовое И

c & d

Да

Побитовое ИЛИ

c | d

Да

Логическое И

c && d

Нет

Логическое ИЛИ

c || d

Нет

Условный оператор

(d < 10) ? 5 : 15

Нет

Перегрузка операторов

Для того, чтобы перегрузить оператор, нужно использовать ключевое слово operator.

public static bool operator == (Value a, Value b)

{

return a.Int == b.Int;

}

Если операторы образуют пары, то нужно перегрузить оба оператора пары:

== и !=

< и >

<= и >=

  1. Циклы

В С# есть четыре вида циклов:

while

do-while

for

foreach

Переменные объявленные в цикле (в том числе в заголовке цикла for и foreach) не видны снаружи цикла (так же как в стандартном C++).

Оператор цикла while.

Пока истинно условие выполняется оператор - тело цикла.

int a = 3;

while (a < 3)

{

System.Console.WriteLine(a);

a++;

}

Оператор цикла do-while.

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

int a = 4;

do

{

System.Console.WriteLine(a);

a++;

}

while (a < 3)

Оператор цикла for.

Этот цикл чаще всего используют когда число повторений известно заранее.

for (int a = 0; a < 5; a ++)

{

System.Console.WriteLine(a);

}

Есть частная разновидность - бесконечный цикл - for (;;){...}

В C# рекомендуют бесконечный цикл писать как while(true){...}

Оператор цикла foreach.

Этот цикл полезен для перебора всех элементов в массиве, классах типа ArrayList и Hashtable (и вообще всех классах, реализующих IEnumerable).

int[] a = new int[]{1,2,3};

foreach (int b in a)

{

System.Console.WriteLine(b);

}

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