Скачать презентацию Основы программирования на языке C Андриевский Леонид Владимирович Скачать презентацию Основы программирования на языке C Андриевский Леонид Владимирович

C#.pptx

  • Количество слайдов: 36

Основы программирования на языке C# Андриевский Леонид Владимирович Основы программирования на языке C# Андриевский Леонид Владимирович

По материалам Г. Шилдт «C# 4. 0 полное руководство» Вильямс, 2011 [RU] «Руководство по По материалам Г. Шилдт «C# 4. 0 полное руководство» Вильямс, 2011 [RU] «Руководство по программированию на C#» , Microsoft Developer Network [EN] (http: //bit. ly/5 v. Z 3 OB) Курс MCTS: . NET Framework 4, Windows [EN] Applications (70 -511)

Hello, world! using System; namespace Hello. World { class Hello { static void Main() Hello, world! using System; namespace Hello. World { class Hello { static void Main() { Console. Write. Line("Hello World!"); Console. Write. Line("Нажите любую клавишу для выхода. "); // Ожидания нажатия клавиши перед завершением приложения Console. Read. Key(); } } }

1. 2. 3. Пространства имён (namespace) Используются для создания иерархической структуры хранения описанных в. 1. 2. 3. Пространства имён (namespace) Используются для создания иерархической структуры хранения описанных в. NET классов. Организация собственного пространства имён помогает контролировать область действия классов в крупных проектах: namespace My. Namespace { class A 1 { <описание класса> } <другие описания классов> } Обращение к классу пространства имен (по подному имени): My. Namespace. A 1 System. Console 3. Языковая конструкция using <пространство имен>; может отменить необходимость указания полного имени класса. 4. Для поиска класса в глобальном пространстве имен используется префикс global: : , например global: : System. Console. Write. Line("Hello World");

Объявление переменных Примеры: int x; long y = 5; bool p, q, r; double Объявление переменных Примеры: int x; long y = 5; bool p, q, r; double a, b = 8. 0, c, d = 9. 0, e; Определение типа переменной по типу начального значения: var x = 18;

Система типов C# С# - строго типизированный язык ◦ Каждая константа и переменная имеет Система типов C# С# - строго типизированный язык ◦ Каждая константа и переменная имеет тип ( как и каждое выражение, результатом вычисления которого является значение) ◦ Каждая сигнатура метода задает тип для каждого входного параметра и для возвращаемого значения. Каждый тип в CTS определен либо как тип значения (наследники типа System. Value. Type): ◦ встроенные числовые типы C#; ◦ структуры (типы, объявленные с помощью слова struct); ◦ перечисления (типы, объявленные с помощью слова enum). либо как ссылочный тип: ◦ ◦ тип object; классы (типы, объявленные с помощью слова struct); строки (string); массивы.

Система типов C# Система типов C#

Основные числовые типы C# System. SByte 1 От -128 до 127 byte System. Byte Основные числовые типы C# System. SByte 1 От -128 до 127 byte System. Byte 1 От 0 до 255 short System. Int 16 2 От -32768 до 32767 ushort System. UInt 16 2 От 0 до 65535 int System. Int 32 4 От -231 до 231 -1 uint System. UInt 32 4 От 0 до 232 -1 long System. Int 64 8 От -263 до 263 -1 ulong Вещ. Размер Диапазон (байт) sbyte Целые Имя типа. NET C# (CTS) System. UInt 64 8 От 0 до 264 -1 float System. Single 4 От ± 1, 5 e− 45 до ± 3, 4 e 38 double System. Double 8 От ± 5, 0 e− 324 до ± 1, 7 e 308 System. Decimal 16 От -7, 9 x 1028 до 7, 9 x 1028 точность 28 -29 знач. цифр Фин. decimal

Основные типы C# Имя типа. NET (CTS) Размер (байт) Диапазон bool System. Boolean 4 Основные типы C# Имя типа. NET (CTS) Размер (байт) Диапазон bool System. Boolean 4 false. . true char System. Char 2 U+0000 до U+FFFF (любой 16 разрядный символ Unicode) string System. String переменный От -32768 до 32767 object System. Object переменный все типы – наследники этого типа Начиная с C# 4. 0 введен тип dynamic – позволяет пропускать проверки типов во время компиляции операции, в которых он применяется (проверки типов проводятся во время выполнения программы)

Таблица неявных числовых преобразований C# Таблица неявных числовых преобразований C#

Допускающие значение null типы (Nullable) Допускающие значение null типы (Nullable)

Таблица приоритетов операторов C# Все операции в порядке убывания приоритета Symbol 1 тип операции Таблица приоритетов операторов C# Все операции в порядке убывания приоритета Symbol 1 тип операции Ассоциативность [ ] ( ). -> (постфикс)++ и (постфикс)-- Выражение Слева направо ++(префикс) и –Унарные (префикс) sizeof ~ & * ! + - Справа налево Преобразование типа Унарные Справа налево */% Мультипликативные Слева направо +– Аддитивные Слева направо << >> Битовый сдвиг Слева направо < > <= >= Отношения Слева направо == != Сравнение Слева направо

Таблица приоритетов операторов C# Symbol 1 тип операции Ассоциативность & Побитовое «И» Слева направо Таблица приоритетов операторов C# Symbol 1 тип операции Ассоциативность & Побитовое «И» Слева направо | Побитовое «ИЛИ» Слева направо && Логическое «И» Слева направо || Логическое «ИЛИ» Слева направо ? : Условное выражение Справа налево = *= /= %= += Оператор присваивания и - = <<= >>= сложное присваивание &= ^= |= , Справа налево последовательное выполнение Слева направо

Операторы первого приоритета Операторы первого приоритета

Арифметические операции Арифметические операции

Логические и сдвиговые операции над переменными целых типов Логические и сдвиговые операции над переменными целых типов

Операции над переменными логического типа Операции над переменными логического типа

Операции отношения и проверки типа Операции отношения и проверки типа

Операторы => и ? ? Операторы => и ? ?

Примеры расстановки приоритетов C# Выражение Автоматическая расстановка приоритетов a & b || c (a Примеры расстановки приоритетов C# Выражение Автоматическая расстановка приоритетов a & b || c (a & b) || c a = b || c a = (b || c) q && r || s-- (q && r) || s–– Выражение Автоматическая расстановка приоритетов => ошибка p == 0 ? p += 1: p += 2 (p == 0 ? p += 1 : p) += 2

Объектно-ориентированное программирование Объектно-ориентированное программирование

Перечисления (enum) Способ определения набора именованных констант enum Machine. State { Power. Off, Running, Перечисления (enum) Способ определения набора именованных констант enum Machine. State { Power. Off, Running, Sleeping, Hibernating } По умолчанию базовый тип перечисления = int (можно указать любой целочисленный тип). По умолчанию каждой константе присваивается порядковый номер начиная с 0 (номер любой константы можно изменить): enum Day. Type : byte { Working = 0, Holiday = 7 }

Перечисления (enum) Указание атрибута [Flags] создает перечисление с битовыми флагами, к которым можно применять Перечисления (enum) Указание атрибута [Flags] создает перечисление с битовыми флагами, к которым можно применять битовые операции: [Flags] enum Machine. State { Power. Off = 0 x 1, Running = 0 x 2, Sleeping = 0 x 4, Hibernating = 0 x 8 } … var suspend = Machine. State. Hibernating | Machine. State. Sleeping; Также, поскольку все перечисления - наследники класса System. Enum, можно использовать его статические методы для получения информации о перечислении: foreach (int i in Enum. Get. Values(typeof(Machine. State))) Console. Write. Line(i);

Методы (method) Методы (method)

Свойства (property) Свойства (property)

Делегаты (delegate) Это тип, который определяет сигнатуру метода. При создании экземпляра делегата можно связать Делегаты (delegate) Это тип, который определяет сигнатуру метода. При создании экземпляра делегата можно связать этот экземпляр с любым методом с совместимой сигнатурой. Связанный с делегатом метод можно запустить (или вызвать) с помощью экземпляра делегата. // Объявление делегата public delegate void Del(string message); // Метод, который в дальнейшем будет связан с делегатом public static void Delegate. Method(string message) { System. Console. Write. Line(message); } // Создание делегата и связывание его с методом (Delegate. Method) Del handler = Delegate. Method; // Вызов связанного с делегатом метода (Delegate. Method) handler("Hello World");

Делегаты (delegate) Также делегат может быть проинициализирован анонимной функцией или лямбда-выражением: Del test. Del. Делегаты (delegate) Также делегат может быть проинициализирован анонимной функцией или лямбда-выражением: Del test. Del. B = delegate(string s) { Console. Write. Line(s); }; Del test. Del. C = (x) => { Console. Write. Line(x); }; Делегаты можно комбинировать (несколько делегатов объединяются в один, при этом связанные методы вызываются последовательно в порядке добавления). Для комбинации доступны операции + (добавить делегаты) и – (удалить ранее добавленный делегат): var hi. Del = delegate(string s) { Console. Write("Hello {0}!", s); }; var bye. Del = delegate(string s) { Console. Write("Goodbye {0}!", s); }; multi. Del = hi. Del + bye. Del; multi. Minus. Hi. Del = multi. Del - hi. Del; hi. Del("Q"); // Выведет: Hello Q! bye. Del("U"); // Выведет: Goodbye U! multi. Del("V"); // Выведет: Hello V!Goodbye V! multi. Minus. Del("W"); // Выведет: Goodbye W!

Структуры (struct) Структуры (struct)

Интерфейсы (interface) Интерфейсы (interface)

Классы (class) Классы (class)

События (event) События (event)

Исключения (Exception) Исключения (Exception)

Универсальные шаблоны (Generic) Универсальные шаблоны (Generic)

Индексаторы (Indexers) Индексаторы (Indexers)

Небезопасный код (unsafe) и указатели (pointer) Небезопасный код (unsafe) и указатели (pointer)

Взаимодействие с неуправяемыми программами (Interoperability) Взаимодействие с неуправяемыми программами (Interoperability)