С#. Типы и классы
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 |