Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
51
Добавлен:
29.03.2015
Размер:
315.39 Кб
Скачать

С#. Типы и классы

02. C#. Типы и классы

Определение основных понятий

Класс (Class)

Объект (Object)

Пространство имен (Namespace)

Проект (Project)

Сборка (Assembly)

Решение (Solution)

02. C#. Типы и классы

2

Система типов языка С#

1.Логический тип ( bool ).

2.Символьный тип ( char ).

3.Целые типы. Целые типы могут быть одного из трех размеров - short, int, long, сопровождаемые описателем signed или unsigned, который указывает, как интерпретируется значение - со знаком или без оного.

4.Типы с плавающей точкой. Эти типы также могут быть одного из трех размеров

-float, double, long double.

5.Тип void, используемый для указания на отсутствие информации.

Язык позволяет конструировать типы.

6.Указатели (например, int* - типизированный указатель на переменную типа int).

7.Ссылки (например, double& - типизированная ссылка на переменную типа double).

8.Массивы (например, char[] - массив элементов типа char).

Язык позволяет конструировать пользовательские типы.

9.Перечислимые типы ( enum ) для представления значений из конкретного множества.

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

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

02. C#. Типы и классы

3

Система типов языка С#

Все типы можно разделить на четыре категории:

типы-значения ( value ), или значимые типы,

развернутые типы - значение переменной хранится непосредственно в стеке;

ссылочные ( reference ) - значение в стеке задает ссылку на область памяти в "куче« (Heap);

указатели ( pointer );

тип void.

02. C#. Типы и классы

4

Базисные встроенные типы языка С#

5

Синтаксис объявления сущностей

[<атрибуты>] [<модификаторы>] <тип> <список объявителей>;

<имя> | <имя> = <инициализатор>

Задание инициализатора в объектном стиле:

new <имя конструктора>([<список аргументов>])

02. C#. Типы и классы

6

Типы, допускающие неопределенные

значения

System.Nullable<T>

T?

A ?? B

Выполнение преобразований между типами Т? и Т

static void TestNullable()

{

int x = 3, y = 7;

int? x1 = null, y1, z1; y1 = x + y;

z1 = x1 ?? y1;

Console.WriteLine("x1 = {0}, y1 = {1}, z1 = {2}", x1, y1, z1);

}

02. C#. Типы и классы

7

Выполнение преобразований между типами Т?

и Т//x = (int)x1; y = (int)y1;

Console.WriteLine("x = {0}, y = {1}", x, y);

z1 = x1 * y ?? y1;

y1 = z1 - y1;

Console.WriteLine("x1 = {0}, y1 = {1}, z1 = {2}", x1, y1, z1);

________________________________________________________________

System.Nullable<double> u = x + x1; double? v = y + y1, w;

w = u ?? v + y1;

Console.WriteLine("u = {0}, v = {1}, w = {2}", u, v, w);

02. C#. Типы и классы

8

Выполнение преобразований между типами Т? и Т

02. C#. Типы и классы

9

Null, NaN и Infinity

static void NullAndNan()

{

double? u = null, v = 0, w = 1.5; Console.WriteLine("u = {0}, v = {1}, w = {2}",

u, v, w);

double? x, y, z;

x = u + v; y = w / v; z = x + y;

Console.WriteLine("x = u + v = {0}, y = w / v = {1}, " + " z = x + y = {2}", x, y, z);

02. C#. Типы и классы

10

Null, NaN и Infinity

x = -y; y = v * y; z = x + y;

Console.WriteLine("x = -y = {0}, y = v * y = {1}, " + " z = x + y = {2}", x, y, z);

double p = -(double)w, q = double.NegativeInfinity; Console.WriteLine("p = {0}, q = {1}, 1 / q = {2}",

Math.Sqrt(p), q, 1 / q); p = 1e160;

Console.WriteLine("p = {0}, p * p = {1}", p, p * p); float p1 = 1e20f;

Console.WriteLine("p1 = {0}, p1 * p1 = {1}", p1, p1 * p1);

02. C#. Типы и классы

11