Using System.Drawing; // Явно ссылаемся на пространство имен
Class myClass
{ public void DoIt()
{ // Создаем изображение 20 на 20 пикселей
Bitmap bm = new Bitmap(20, 20);
...
}
}
Можно указывать составное имя класса:
Class myClass
{ public void DoIt()
{ // Создаем изображение 20 на 20 пикселей
System.Drawing.Bitmap bm = new System.Drawing.Bitmap(20, 20);
...
}
}
Выражения и операции
(http://msdn.microsoft.com/ru-ru/library/ms173142)
(http://msdn.microsoft.com/ru-ru/library/6a71f45d)
Таблица 2.6. Операции по категориям и их приоритет
Выражение | Описание (приоритет) |
Основные операторы (9) | |
x.y | Доступ к членам |
f(x) | Вызов функции, метода и делегата |
a[x] | Доступ к элементу массива |
x++ | Постфиксное приращение (инкремент) |
x-- | Постфиксное уменьшение (декремент) |
new T(...) | Создание объекта и делегата |
new T(...){...} | Создание объекта с инициализатором |
new {...} | Анонимный инициализатор объекта |
new T[...] | Создание массива. |
typeof(T) | Получение объекта System.Type для T (определение типа) |
checked(x) | Вычисление выражения в проверенном контексте (создание проверяемого блока) |
unchecked(x) | Вычисление выражения в непроверенном контексте (создание непроверяемого блока) |
default(T) | Получение значения по умолчания для типа T |
delegate {} | Анонимная функция (анонимный метод) |
x->y | Объединение разыменования указателя и доступа к члену (x – это указатель типа T*, а y – это член T) (требуется небезопасный контекст) |
Унарные операторы (8) | |
+x | Унарный плюс |
-x | Унарный минус |
!x | Логическое отрицание |
~x | Поразрядное отрицание (инверсия разрядов) |
++x | Префиксное приращение (инкремент) |
--x | Префиксное уменьшение (декремент) |
(T)x | Явное преобразование типа переменной x в тип T |
& | Унарный оператор возвращает адрес своего операнда (требуется небезопасный контекст) |
sizeof(x) | Определяет размер в байтах для переменной встроенного типа (а также ссылочного типа, типа указателей, структур). |
Мультипликативные операторы (7) | |
* | Умножение |
/ | Деление |
% | Остаток от деления |
Аддитивные операторы (6) | |
x + y | Сложение, объединение строк, объединение делегатов |
x - y | Вычитание, удаление делегатов |
Операторы сдвига (5) | |
x << y | Сдвиг влево |
x >> y | Сдвиг вправо |
Операторы отношения и типа (4) | |
x < y | Меньше |
x > y | Больше |
x <= y | Меньше или равно |
x >= y | Больше или равно |
x is T | Проверка принадлежности к типу. Возвращает значение true, если x относится к типу T, в противном случае возвращает значение false |
x as T | Преобразование типа. Возвращает x типа T или нулевое значение, если x не относится к типу T |
Операторы равенства (3) | |
x == y | Равно |
x != y | Не равно |
Логические, условные операторы и Null-операторы (2) | |
x & y | Логическое умножение – для операндов типа bool. Поразрядное И (AND) – для целых операндов |
x | y | Логическое сложение – для операндов типа bool. Поразрядное ИЛИ (OR) – для целых операндов |
x ^ y | Логическое исключающее ИЛИ – для операндов типа bool. Поразрядное исключающее ИЛИ (XOR) – для целых операндов |
x && y | Условное умножение (AND) – вычисляет y только если x имеет значение true |
x || y | Условное сложение (OR) – вычисляет y только если x имеет значение false |
x ?? y | Объединение нулей – равно y, если x – нулевое, в противном случае равно x |
x ?: y : z | Условная операция. Результат равен y, если x имеет значение true, и z если x имеет значение false |
Операторы назначения и анонимные операторы (1) | |
= | Присваивание |
x op= y | Составное присваивание. Поддерживает следующие операторы: += , -= , *= , /= , %= , &= , |= , ^= , <<= , >>= |
(T x) => y | Анонимная функция (лямбда-выражение) |
Основные операции.
Операции постфиксных инкремента и декремента:
int x = 1;
Console.WriteLine("{0} {1} {2}", x++, x--, x); // Вывод: 1 2 1
Операция sizeof(x) определяет размер в байтах для переменной встроенного или ссылочного типа, а также типа указателей или структур:
int intSize = sizeof(int); // Результат: intSize = 4
Пример 2.4. Использование операции ->.
/ Компилировать с ключем: /unsafe
Struct Point
{ public int x, y;
}
Class MainClass12
{ unsafe static void Main()
{ Point pt = new Point();
Point* pp = &pt;
pp->x = 123;
pp->y = 456;
Console.WriteLine("{0} {1}", pt.x, pt.y); // Вывод: 123 456
}
}
Унарные операции.
Пример 2.5. Использование операции инверсии разрядов целого числа (~).
using System;
Class Demo
{ public static string ByteToStr(byte b)
// Преобразование байта (b) в двоичную форму
{ string s = ""; // Выходная строка
// Цикл преобразования 8-ми разрядов
for (sbyte n = 7; n >= 0; n--)
{ if ((byte)(b / Math.Pow(2, n)) == 1)
{ s = s + '1';
b = (byte)(b - (byte)(Math.Pow(2, n)));
}
Else
s = s + '0';
}
return s;
}
Static void Main()
{ byte b = 1;
int i = (int) b;
i = ~i;
byte b2 = (byte) (i);
Console.WriteLine("Демонстрация инверсии разрядов " +
"целого числа:");
Console.WriteLine("Значение байта без инверсии: {0,3};\t" +
"двоичная форма: {1}", b, ByteToStr(b));
Console.WriteLine("Значение байта с инверсией: {0,3};\t" +
"двоичная форма: {1}", b2, ByteToStr(b2));
Console.ReadLine();
}
}
/* Вывод:
Демонстрация инверсии разрядов целого числа: