
- •12. Фундаментальные принципы ооп
- •13. Методы
- •14. Конструкторы и деструкторы
- •15. Структуры и перечисления
- •16. Свойства и поля класса
- •18. Анонимные типы
- •20. Расширяющие методы.
- •19. Перегрузка операций в классе. Явное и неявное преобразование типов. Ограничения на преобразование типов.
- •17. Статические поля, методы, конструкторы, классы.
- •2. Типы данных
- •3. Базовые типы
- •Унарные операции Можно определять в классе следующие унарные операции:
- •Бинарные операции
- •5.Выражения (порядок их вычисления, тип результата, оператор присваивания).
- •6.Операторы ветвления (if, switch, case, break , goto case).
- •Оператор break
- •Оператор goto-оператор безусловного перехода. Когда в программе встречается оператор goto, ее выполнение переходит непосредственно к тому месту, на которое указывает этот оператор.
- •7. Операторы цикла (for, while, do-while, foreach, break continue).
- •8. Обработка исключений (операторы обработки исключений, класс Exception, создание объектов Exception, захват исключения, последовательность обработки исключений, классы Debug и Trace)
- •9. Массивы (одномерные, многомерные и ступенчатые массивы, класс Array).
- •Многомерные массивы
- •Ступенчатые массивы
- •10. Создание и подключение сборок. Пространства имен (ключевые слова using, namespace)
- •11. Сложение:
- •14. Структурные блоки платформы .Net: cli, clr, cls, cts.
- •17. Таблица приоритетов операций, соответствующая Common Language Specification (cls)
- •21. Интерфейс программирования приложений WinForms.
- •22. Интерфейс программирования приложений wpf.
- •24.Кодирование символов (ascii, utf, utf-8, utf-16)
- •3.Вопросы по c# часть 1
- •22 Делегаты
- •23 События
- •24 Наследование классов
- •25 Интерфейсы
- •26 Шаблоны и интерфейс iEnumerable
- •27 Динамический тип данных
- •Статический класс Environment.
- •2) Класс DriveInfo.
- •3) Классы для работы с каталогами (папками) (System.Io.Directory, System.Io.DirectoryInfo)
- •9.2.3. Создание подпапок с помощью класса DirectoryInfo
- •9.3. Работа с классом Directory
- •9.4. Работа с классом DriveInfo
- •Классы для работы с файлами (System.Io.File, System.Io.FileInfo).
- •9.1. Абстрактный базовый класс FileSystemInfo
14. Структурные блоки платформы .Net: cli, clr, cls, cts.
CLI это открытая спецификация разработанная фирмой Microsoft которая описывает код исполнительной программы и среду выполнения. Спецификация подразумевает среду разрешающую нескольким языкам высокого уровня быть использованными на разных компьютерных платформах без переписи под специфику архитектур. CLI это спецификация, а не реализация, также CLI часто путают с CLR, которая содержит аспекты вне спецификации. Спецификация CLI состоит из 4 аспектов: Common Type System (CTS) - Набор типов и операций которые используются во многих языках программирования.
Metadata - Информация о структуре программы является независимой от языка, потому вы можете использовать программу в разных языках. Common Language Specification (CLS) - Набор базовых правил, которые язык программирования CLI должен соблюдать, что-бы общаться с другими CLS языками.
Virtual Execution System (VES) - Загружает и выполняет CLI-совместимые программы, используя метаданные чтобы совместить сгенерированные куски кода во время исполнения.
CLR - специальная виртуальная машина, которая управляет компиляцией в инструкции процессора и выполнением модулей, состав-ленных на промежуточном языке; CLR начинает работать при каждом запуске управляемых модулей на выполнение. Она является основой .NET Framework. Среда CLR является виртуальной машиной, которая расположена поверх ОС (выполняется под управлением ОС и использует все ее возможности) и управляет выполнением приложений разработанных для платформы .Net. CLS представляет собой набор правил, которые во всех подробностях описывают минимальный и полный комплект функциональных возможностей, которые должен обязательно поддерживать каждый отдельно взятый .NET-компилятор для того, чтобы генерировать такой программный код, который мог бы обслуживаться CLR и к которому в то же время могли бы единообразным образом получать доступ все языки, ориентированные на платформу .NET. CLS может считаться просто подмножеством всех функциональных возможностей, определенных в CTS. Спецификация CLS обеспечивает расширенное и надежное взаимодействие языков, определяя набор функциональных возможностей, доступных разработчикам в разных языках. В CLS также устанавливаются требования к CLS-совместимости, которые позволяют проверять, соответствует ли управляемый код спецификации CLS, и определять для конкретного средства уровень поддержки разработки управляемого кода, в котором используются функциональные возможности CLS.
Common Type System (сокр. CTS, рус. Стандартная система типов) — часть .NET Framework, формальная спецификация, определяющая, как какой-либо тип (класс, интерфейс, структура, встроенный тип данных) должен быть определён для его правильного выполнения средой .NET. Кроме того, данный стандарт определяет, как определения типов и специальные значения типов представлены в компьютерной памяти. Целью разработки CTS было обеспечение возможности программам, написанным на различных языках программирования, легко обмениваться информацией. Как это принято в языках программирования, тип может быть описан как определение набора допустимых значений (например, «все целые от 0 до 10») и допустимых операций над этими значениями (например, сложение и вычитание).
15. В .NET все (классы, переменные, структуры и т.д.) разбито по пространствам имен, что позволяет избавиться от возможных конфликтов в именовании и, в тоже время, использовать одинаковые имена в разных пространствах. Пространство имен – это определенная область, внутри которой все имена должны быть уникальными. Пространство имен определяется с помощью ключевого слова namespace следующим образом:
namespace TextNamespace
{ Определение типов, классов, переменных }
Таким образом, можно определить собственное пространство имен, которое действует между фигурными скобками, где можно объявлять свои типы. Имя пространства имен может состоять из нескольких частей, разделенных точной. Для доступа к типам, объявленным внутри определенного пространства имен:
1. Имя_Пространстра_Имен.Переменная
2. Мы должны находиться в том же самом пространстве имен, т.е. внутри фигурных скобок.
3. Мы должны подключить пространство имен с помощью оператора using: using System.
Базовой единицей защиты, управления версиями и развертывания в .NET Framework является не управляемый модуль, а сборка (assembly).
Сборки образуют базовую единицу развертывания, управления версиями, повторного использования, областей действия активации и разрешений безопасности для приложений на основе .NET. Сборки принимают форму исполняемого файла (EXE) или файла библиотеки динамической компоновки (DLL); они являются стандартными блоками платформы .NET Framework. Среда CLR получает от них сведения, необходимые для реализации типов. Сборку можно представить как коллекцию типов и ресурсов, формирующих логическую единицу функциональности и собранных для совместной работы.
Сборки могут содержать один или несколько модулей. Например, крупные проекты могут быть спланированы таким образом, чтобы несколько разработчиков работали каждый над своим модулем, а вместе эти модули образовывали одну сборку.
16. При выполнении программы для хранения данных используются два участка оперативной памяти, которые называются стеком (stack) и "кучей".
Стек (stack) – это линейный участок памяти (массив), который действует как структура данных типа «Последним пришел – первым ушел» (last-in, first-out – LIFO). Основной особенностью стека являются то, что данные могут добавляться только к вершине стека и удаляться из вершины. Добавление и удаление данных из произвольного места стека невозможно. Операции по добавлению и удаление элементов из стека выполняются очень быстро. Однако размер стека, как правило, ограни-чен, и время хранения данных зависит от времени жизни переменной. Для всех локальных переменных методов и передаваемых методам па-38
раметров память выделяется в вершине стека. После того, как методы заканчивают работу вся выделенная память в стеке для их переменных автоматически освобождается.
Куча (heap) – это область оперативной памяти, в разных частях которой могут выделяться участки для хранения объектов классов. В отличие от стека, такие участки памяти в "куче" могут выделяться и освобождаться в любом порядке. Хотя программа может хранить элементы данных в "куче", она не может явно удалять их из нее. Вместо этого компонент среды CLR, называемый «Сборщиком мусора» (Garbage Col-lector, GC), автоматически удаляет неиспользуемые участки "кучи", ко-гда он определит, что код программы уже не имеет доступа к ним (не хранит их адреса).
Переменные – это именованные участки памяти, которые могут хранить либо значения некоторого типа (для значащих типов, в стеке), либо ссылки на экземпляры некоторых классов (для ссылочных типов, ссылки на объекты, расположенные в "куче"). В C# также разделяют пе-ременные на поля классов (объявляются в описаниях классов и создают-ся для каждого объекта) и локальные переменные методов (создаются при каждом вызове метода класса). [модификаторы] <тип> <имя_переменной> При объявлении переменных указывается их тип и имя, где имя_переменной – это просто название переменной или название пере-менной с инициализацией (начальным значением). После типа можно указывать и список имен, разделенных запятой. Инициализацию можно осуществлять либо с помощью присваивания значений или с использованием конструкции new и вызовом конструктора по умолчанию.
int x, s; //без инициализации
int y =0, u = 77; //обычный способ инициализации
//допустимая инициализация
float w1 = 0f, w2 = 5.5f, w3 = w1 + w2 + 125.25f;
//допустимая инициализация в объектном стиле
int z= new int();
x = u + y; //теперь x инициализирована
В C# константы могут задаваться в виде литералов (набора сим-волов) или именованных констант. Например: y = 7.7;
Значение константы "7.7" является одновременно ее именем, а также она имеет и тип. По умолчанию константы с дробной частью имеют тип double. Точный тип константы можно задать с помощью символа, стоящего после литерала (в верхнем или нижнем регистре). Такими символами могут быть: f – тип float; d – тип double; m – тип decimal.
Также можно объявить именованную константу. Для этого в объявление переменной добавляется модификатор const. Именованные константы обязательно должны быть инициализированы и инициализация не может быть отложенной. Например:
const float с = 0.1f;
Под строковыми константами понимается последовательность символов заключенная в двойные кавычки ("): обычные константы, которые представляют строку символов, за-ключенную в двойные кавычки – "ssss"; @-константы, заданные обычной константой c предшествующим знаком @.
s1 = "c:\\c#book\\ch5\\chapter5.doc"
s2 = @"c:\c#book\ch5\chapter5.doc"