
- •Система типов
- •Литература
- •Обзор
- •Изучение языка программирования
- •Тип данных
- •Обзор CTS
- •Где и как хранятся значения типов
- •Типы значений и ссылочные типы
- •Система общих типов CTS
- •Размерные и ссылочные типы данных
- •Объявление и удаление ссылочных переменных
- •Неверное использование ссылок
- •Сравнение значений и сравнение ссылок
- •Множество ссылок на один и тот же объект
- •Встроенные типы данных
- •Простые типы
- •Назначение имен переменных
- •Правила и рекомендации по назначению имен
- •Объявление локальных переменных
- •Инициализация переменной
- •Типы, допускающие неопределенные значения
- •Null, NaN и Infinity
- •Время жизни и область видимости переменных
- •Неявно типизированные переменные
- •readonly
- •Константы
- •Тест: найдите ошибки
- •Составная операция присваивания
- •Основные операторы
- •Инкремент и декремент
- •Пример
- •Приоритет операторов
- •Создание пользовательских типов данных
- •Перечисления
- •Структуры
- •Преобразование типов
- •Иерархия типов при неявном преобразовании
- •Неявное (автоматическое) преобразование типов
- •Явное преобразование типов
- •Лабораторная работа 2: Создание и использование

Объявление и удаление ссылочных переменных
|
Объявление ссылочных переменных |
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
coordinate c1; |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
c1 = new coordinate(); |
|
|
|
• |
|
|
|
|
6.12 |
|
4.2 |
|
||
|
c1.x |
= |
6.12; |
|
|
|
• |
|
|
|
|
. |
|
. |
|
|
c1.y |
= |
4.2; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Удаление ссылочных переменных
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
c1 = null; |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
• |
|
|
|
|
|
6.12 |
|
4.2 |
|
|
|
|
|
• |
|
|
|
|
|
. |
|
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

Неверное использование ссылок
Если вы используете неверную ссылку
Вы не можете добраться до свойств и методов несуществующего объекта
Неправильные ссылки на этапе компиляции
Компилятор отлавливает попытки использования не инициализированных переменных
Неправильные ссылки на этапе выполнения
Система генерирует исключение

Сравнение значений и сравнение ссылок
Сравнение размерных типов
== и != сравнивают значения
Сравнение ссылочных типов
== и != сравнивают ссылки, а не значения
•• 1..0
2..0
Разные ссылки, одинаковые значения
•• 1..0
2..0

Множество ссылок на один и тот же объект
Две ссылки могут указывать на один объект
Изменяя свойства объекта через одну ссылку, изменения будут доступны через другую
c1
c2
••
2..3 7..6
••
coordinate c1 = new coordinate( ); coordinate c2;
c1.x = 2.3; c1.y = 7.6; c2 = c1;
Console.WriteLine(c1.x + " , " + c1.y); Console.WriteLine(c2.x + " , " + c2.y);

Встроенные типы данных
Объявление локальных переменных
Инициализация переменных
Составная операция присваивания
Основные операторы
Инкремент и декремент
Приоритет операторов

Простые типы
Идентифицируются через зарезервированные ключевые слова
int // Reserved keyword
- или -
System.Int32

Назначение имен переменных
Общая структура объявления
[<атрибуты>] [<модификаторы>] <тип> <объявители>;
Правила и рекомендации по назначению имен переменных
Ключевые слова в C#

Правила и рекомендации по назначению имен
Правила
Использовать буквы, цифры или символ подчеркивания
Рекомендации
Не использовать только прописные буквы
Не пользоваться аббревиатурами
Для имен, состоящих из нескольких слов использовать технику «Паскаль»
Answer42Answer42 42Answer42Answer
differentdifferent DifferentDifferent
BADSTYLEBADSTYLE
BestStyleBestStyle

Ключевые слова C#
Ключевые слова – предопределенные идентификаторы, имеющие определенное значение для компилятора
abstract, base, bool, default, if, finally
Не используйте ключевые слова для именования переменных
Иначе ошибка на этапе компиляции
Избегайте использования ключевых слов через
смену регистра
int INT; // Poor style

Объявление локальных переменных
Объявляется тип данных и имя переменной:
int itemCount;
int itemCount = new int();
Допускается объявление нескольких переменных в одной строке:
int itemCount, employeeNumber;
--или--
int itemCount, employeeNumber;