Читайте также: |
|
Сдвиг | x << y | Поразрядный сдвиг влево |
x >> y | Поразрядный сдвиг вправо | |
Отношение и проверка типа | x < y | Меньше |
x > y | Больше | |
x <= y | Меньше или равно | |
x >= y | Больше или равно | |
x is T | Возвращает true, если x имеет тип T; в противном случае возвращает false | |
x as T | Возвращает значение x, типизированное как T, или null, если x имеет тип, отличный от T | |
Равенство | x == y | Равно |
x!= y | Не равно | |
Логическое И | x & y | Целое побитовое И, логическое И |
Исключающее ИЛИ | x ^ y | Целое побитовое исключающее ИЛИ, логическое исключающее ИЛИ |
Логическое ИЛИ | x | y | Целое побитовое ИЛИ, логическое ИЛИ |
Условное И | x && y | y вычисляется только в том случае, если x имеет значение true |
Условное ИЛИ | x || y | y вычисляется только в том случае, если x имеет значение false |
Объединение с null | X?? y | Если x имеет значение null, вычисляется y; в противном случае вычисляется x |
Условный | x? y: z | Если x имеет значение true, вычисляется y; если x имеет значение false, вычисляется z |
Присваивание или анонимная функция | x = y | Присваивание |
x op= y | Составное присваивание; поддерживаются следующие операторы: *= /= %= += -= <<= >>= &= ^= |= | |
(T x) => y | Анонимная функция (лямбда-выражение) |
1.5 Операторы языка
Действия программы выражаются с помощью операторов. В C# поддерживается несколько различных типов операторов, некоторые из которых определяются как внедренные операторы.
Блок позволяет записать несколько операторов языка в контексте, обычно допускающем использование только одного оператора. Блок состоит из нескольких операторов, записанных между разделителями — { и }.
Операторы объявления используются для объявления локальных переменных и констант.
Операторы выражений используются для вычисления выражений. Как операторы могут использоваться следующие выражения: вызовы методов, выделение объектов с помощью оператора new, операторы присваивания «=» и составного присваивания, операции приращения и уменьшения с помощью операторов «++» и «--».
Операторы выбора используются для выполнения одного из нескольких возможных операторов на основании значения какого-либо выражения. В этой группе представлены операторы if и switch.
Операторы итераций используются для повторяющегося выполнения внедренного оператора. В этой группе представлены операторы while, do, for и foreach.
Операторы перехода используются для передачи управления. В этой группе представлены операторы break, continue, goto, throw, return и yield.
Оператор try...catch используется для перехвата исключений, происходящих во время выполнения блока. Оператор try...finally используется для задания кода финализации, который выполняется всегда (независимо от того, возникло или нет исключение).
Операторы checked и unchecked используются для управления контекстом контроля переполненияв арифметических операциях и преобразованиях целых типов.
Оператор lock используется для получения блокировки взаимного исключения для заданного объекта, выполнения оператора и последующего снятия блокировки.
Оператор using используется для получения ресурса, выполнения оператора и последующего удаления ресурса.
В следующей таблице представлены операторы C# и примеры их использования.
Оператор | Пример |
Объявление локальной переменной | static void Main() { int a; int b = 2, c = 3; a = 1; Console.WriteLine(a + b + c); } |
Объявление локальной константы | static void Main() { const float pi = 3.1415927f; const int r = 25; Console.WriteLine(pi * r * r); } |
Оператор выражения | static void Main() { int i; i = 123; // Expression statement Console.WriteLine(i); // Expression statement i++; // Expression statement Console.WriteLine(i); // Expression statement } |
Оператор if | static void Main(string[] args) { if (args.Length == 0) { Console.WriteLine("No arguments"); } else { Console.WriteLine("One or more arguments"); } } |
Оператор switch | static void Main(string[] args) { int n = args.Length; switch (n) { case 0: Console.WriteLine("No arguments"); break; case 1: Console.WriteLine("One argument"); break; default: Console.WriteLine("{0} arguments", n); break; } } } |
Оператор while | static void Main(string[] args) { int i = 0; while (i < args.Length) { Console.WriteLine(args[i]); i++; } } |
Оператор do | static void Main() { string s; do { s = Console.ReadLine(); if (s!= null) Console.WriteLine(s); } while (s!= null); } |
Оператор for | static void Main(string[] args) { for (int i = 0; i < args.Length; i++) { Console.WriteLine(args[i]); } } |
Оператор foreach | static void Main(string[] args) { foreach (string s in args) { Console.WriteLine(s); } } |
Оператор break | static void Main() { while (true) { string s = Console.ReadLine(); if (s == null) break; Console.WriteLine(s); } } |
Оператор continue | static void Main(string[] args) { for (int i = 0; i < args.Length; i++) { if (args[i].StartsWith("/")) continue; Console.WriteLine(args[i]); } } |
Оператор goto | static void Main(string[] args) { int i = 0; goto check; loop: Console.WriteLine(args[i++]); check: if (i < args.Length) goto loop; } |
Оператор return | static int Add(int a, int b) { return a + b; } static void Main() { Console.WriteLine(Add(1, 2)); return; } |
Оператор yield | static IEnumerable<int> Range(int from, int to) { for (int i = from; i < to; i++) { yield return i; } yield break; } static void Main() { foreach (int x in Range(-10,10)) { Console.WriteLine(x); } } |
Операторы throw и try | static double Divide(double x, double y) { if (y == 0) throw new DivideByZeroException(); return x / y; } static void Main(string[] args) { try { if (args.Length!= 2) { throw new Exception("Two numbers required"); } double x = double.Parse(args[0]); double y = double.Parse(args[1]); Console.WriteLine(Divide(x, y)); } catch (Exception e) { Console.WriteLine(e.Message); } finally { Console.WriteLine(“Good bye!”); } } |
Операторы checked и unchecked | static void Main() { int i = int.MaxValue; checked { Console.WriteLine(i + 1); // Exception } unchecked { Console.WriteLine(i + 1); // Overflow } } |
Оператор lock | class Account { decimal balance; public void Withdraw(decimal amount) { lock (this) { if (amount > balance) { throw new Exception("Insufficient funds"); } balance -= amount; } } } |
Оператор using | static void Main() { using (TextWriter w = File.CreateText("test.txt")) { w.WriteLine("Line one"); w.WriteLine("Line two"); w.WriteLine("Line three"); } } |
1.6 Классы и объекты
В C# классы представляют собой фундаментальные типы. Класс — это структура данных, объединяющая состояние (поля) и действия (методы и другие функции-члены). Класс предоставляет определения для динамически создаваемых экземпляров класса (также называются объектами). Классы поддерживают механизмы наследования и полиморфизма, которые позволяют создавать производные классы, расширяющие функциональные возможности базового класса.
Новые классы создаются с помощью объявлений класса. Объявление класса начинается с заголовка, в котором задаются атрибуты и модификаторы класса, имя класса, базовый класс (если есть), а также интерфейсы, реализуемые классом. За заголовком следует тело класса, которое содержит перечень объявлений членов, записанных между разделителями — { и }.
Ниже приведено объявление простого класса Point:
public class Point
{
public int x, y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
Экземпляры класса создаются с помощью оператора new, который выделяет память для нового экземпляра, вызывает конструктор для инициализации экземпляра и возвращает ссылку на экземпляр. С помощью следующих операторов создаются два объекта Point, ссылки на которые сохраняются в двух переменных:
Дата добавления: 0000-00-00; просмотров: 77 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
CRIMINAL LAW: The Issue of Public Wrongs | | | Pragma warning 13 страница |