- •1. Эволюция языков программирования. Что такое net?
- •Internet и появление языка Java.
- •2.Компоненты платформы net.
- •3.Модель выполнения приложения в среде .Net Framework. Промежуточный язык Microsoft (Microsoft Intermediate Language, msil). Сборки.
- •4. Обзор встроенных типов данных c#. Применение встроенной функциональности типов данных.
- •5.Операции ввода/вывода. Формат вывода. Пространство имён System. Класс System.Math.
- •6.Операции, операторы и выражения в c# .
- •Операторы
- •7. Массивы в c# (одномерные и двумерные). Класс System.Random, применение его методов для создания массива случайных чисел. Класс System.Array, использование его методов и свойства Length.
- •8. Структуры в c#, создание структуры.
- •9. Понятие объектно-ориентированного программирования.
- •10. Классы в c#. Члены класса: методы, поля, свойства и события. Форма определения класса.
- •11. Типы значений и ссылочные типы. Динамическое использование памяти: стеки и кучи. Упаковка и распаковка.
- •12. Конструкторы и деструкторы. Сборка «мусора».
- •13. Определение пользовательских методов класса. Модификаторы доступа к методам класса. Параметры методов класса, передача аргументов. Модификаторы ref, out, params параметров методов.
- •14. Возвращение методами объектов класса. Возвращение методами массивов.
- •15. Общие (статические) члены класса. Доступ к общим членам. Ограничения на static-методы.
- •Ограничения на static-методы.
- •16.Область видимости и время существования переменных. Преобразование и приведение типов.
- •17.Обработка исключительных ситуаций.
- •18.Перегрузка методов. Перегрузка конструкторов.
- •19.Перегрузка операторов. Перегрузка бинарных, унарных и операторов отношений.
- •20. Инкапсуляция и свойства. Формат записи свойств.
- •21.Индексаторы. Специальные приемы построения типов. Создание одномерного индексатора.
- •22.Создание двумерного индексатора.
- •23.Механизмы реализации инкапсуляции в c#.
- •24.Базовые классы и наследование. Доступы к членам классов.
- •25.Конструкторы и наследование.
- •26.Ссылки на базовый класс и объекты производных классов.
- •27.Виртуальные методы и их переопределение.
- •28.Использование абстрактных классов.
- •29.Механизмы реализации полиморфизма в c#.
- •30.Интерфейсы. Реализация интерфейсов. Стандартные интерфейсы среды .Net Framework.
- •31.Коллекции. Классы коллекций общего назначения.
- •32.Делегаты. Назначение делегатов. Многоадресатная передача.
- •33.События. Объявление и генерация событий. Реализация обработчиков событий
- •34.Обзор технологий программирования Windows-приложений.
- •35.Архитектура Windows Forms. Класс Form.
- •36.Элементы управления формы
4. Обзор встроенных типов данных c#. Применение встроенной функциональности типов данных.
В С# существует множество встроенных или простых типов.Любой встроенный тип С# это псевдоним, для системного типа определённого в простравнстве имён System
Простые типы С# и системные типы
Простой тип С# |
Системный тип |
Диапазон значений |
Описание типа |
Sbyte |
SByte |
-128…+128 |
Число со знаком занимает 1 байт |
Byte |
Byte |
0…255 |
Чісло без знака занимает 1 байт |
short |
Int16 |
-32768…32667 |
Короткое 16 битовое число со знаком (2байта) |
Ushort |
Uint16 |
0…65535 |
короткое 16 битовое число без знака |
Int |
Int32 |
-2147483648…2147483647 |
Целое 32 битовое число со знаком |
uint |
Uint32 |
0…4294967295 |
Целое 32 битовое без знака целое число |
long |
Uint64 |
0…18446744073709551615 |
Знаковое 64-битное целое число(8 байт) |
ulong |
|
0…2^64-1 |
64 битное 8 байтное целое число без знака |
char |
Char |
2 байта для расширенной таблицы кодов символов |
Один 16 битовый символ Юникод |
Float |
Single |
-3.40282e+038…3.40282e+038 |
Вещественное число одинарной точности с плавающей запятой, занимающей 32 бита или 4 байта |
double |
Double |
-1.79769e+308…1.79769e+308 |
Вещественное число двойной точности с плавающей запятой занимает 64 бита либо 8 байт |
Bool |
Boolean |
True or False |
Логические данные |
decimal |
Decimal |
10^0…10^28 |
Число фиксированной точности или 12 байт |
String |
String |
Ограниченно системной памятью |
Строка символов |
Object |
Object |
Практически всё что угодно. Все типы происходят от класса System.Object поэтому объектом является всё |
У всех встроенных типов есть значение по умолчанию (0-для числовых, False-bool, null –string, object; но в методах классов переменные нужно инициализировать)
Системные имена называют также структурами типов значений. Структуры имеют методы. Например Int32 - Parse(string) преобразует строку символов string в число.
Преобразования типов
Если при вычислении выражения операнды имеют разные типы, то возникает необходимость приведения их к одному типу. Такая необходимость возникает и тогда, когда операнды имеют один тип, но он несогласован с типом операции. Например, при выполнении сложения операнды типа byte должны быть приведены к типу int, поскольку сложение не определено над байтами. При выполнении присваивания x=e тип источника e и тип цели x должны быть согласованы. Аналогично, при вызове метода также должны быть согласованы типы фактического и формального аргументов.
Рассмотрим преобразования при работе с числовыми типами. Заметим, что преобразование типов бывает неявным и явным. Неявное преобразование (implicit conversion) выполняется автоматически. При выполнении данного преобразования никогда не происходит потеря точности или переполнение, так как множество значений целевого типа включает множества значений приводимого типа. Для явного преобразования (explicit conversion) требуется применять оператор приведения в форме (<целевой тип>)<выражение>. При выполнении явного преобразования ответственность за его корректность возлагается на программиста.
Для более гибкого контроля значений, получаемых при работе с числовыми выражениями, в языке C# предусмотрено использование контролируемого и неконтролируемого контекстов. Контролируемый контекст объявляется в форме checked <программный блок>, либо как оператор checked(<выражение>). Если при преобразовании типов выражение в контролируемом контексте получает значение, выходящие за пределы целевого типа, то генерируется либо ошибка компиляции (для константных выражений), либо ошибка времени выполнения (для выражений с переменными).
При использовании неконтролируемого контекста выход за пределы целевого типа ведет к автоматическому «урезанию» результата либо путем отбрасывания бит (целые типы), либо путем округления (вещественные типы). Неконтролируемый контекст объявляется в форме unchecked <программный блок>, либо как оператор unchecked(<выражение>).