
- •Обзор типов данных
- •Ссылочные типы и адреса
- •Объявление переменных (в любом месте в пределах класса): тип_данных список_имен;
- •Арифметические операторы
- •Операторы инкремента и декремента
- •Логические операторы
- •логические операторы
- •Для логических операторов операнды должны иметь тип bool. Результатом логических операций также являются
- •Принцип выполнения быстрых операций
- •Единственная разница между обычной и быстрой версиями операторов:
- •Приоритетность выполнения операторов
- •Символьный тип
- •Литералы
- •Целочисленные литералы представлены как числа без дробной части.
- •1. По умолчанию типом целочисленных литералов является наименьший целочисленный тип, начиная с int,
- •беззнаковый целочисленный литерал
- •4. Хотя целочисленные литералы, имеющие тип int, uint, long или ulong, могут быть
- •Управляющие символы
- •Последовательность символов и описание действия
- •Строковые литералы
- •Пример:
- •Переменные и их инициализация
- •При создании переменной создается объект данных - экземпляр ее типа,
- •Инициализация переменной
- •Примеры инициализации:
- •Область видимости и время жизни переменных
- •Область видимости может быть
- •//В программе демонстрируется возможности доступа
- •// В данном блоке видны обе переменные, x и y.
- •Внутри блока переменная может быть объявлена в любом месте,
- •!!! ВАЖНО:
- •Пример:
- •переменная y
- •Программа с попыткой объявить две переменные с одинаковыми именами ошибочна:

Типы данных языка C#
Строгий контроль типов данных в C#
C# - язык со строгим контролем типов данных –
все операции в C# контролируются компилятором на предмет совместимости типов данных,
если операция является недопустимой, то она не будет компилироваться.
Это помогает
предотвратить ошибки и
повышает надежность.
Для этого всем переменным, результатам вычислений выражений и значениям задан определенный тип.
Более того, тип значения определяет виды операций, которые разрешено производить над ним.
Операция, разрешенная для одного типа данных, может быть запрещена для другого типа.
1

Обзор типов данных
C# поддерживает стандартный набор встроенных типов:
типы – значения (13),
ссылочные типы (string, object)
Для каждого типа данных C# существует соответствующий тип данных в CLR
каждый тип имеет 2 идентификатора –
полный из CLR - можно использовать в любом языке .NET,
сокращенный - используется в C#.
2

1. |
byte Byte 1 |
Целое (без знака) |
2. |
sbyte SByte |
1 Целое (со знаком) |
3.short Int16 2 Короткое целое (со знаком)
4. |
ushort |
UInt16 |
2 |
Короткое целое (без знака) |
||
5. |
int |
Int32 4 |
Целое (со знаком) |
|||
6. |
uint |
UInt32 |
4 |
Целое (без знака) |
||
7. |
long |
Int64 8 |
Длинное целое (со знаком) |
|||
8. |
ulong |
|
UInt64 |
8 |
Длинное целое (без знака) |
|
9. |
float |
Single |
4 |
Вещественное число |
||
10. |
double |
Double |
8 |
Вещественное число |
||
11. |
decimal Decimal |
16 |
Вещественное число |
|||
|
|
|
|
|
|
фиксированной точности |
12. |
char |
Char 2 |
Символ Unicode |
|||
13. |
bool |
Boolean 1 |
Логический тип |
|||
14. |
string |
|
String |
|
4 |
ссылка на строку Unicode |
15. |
objectObject |
4 |
ссылка |
|||
16. |
dynamic Dynamic 4 |
ссылка |
http://msdn.microsoft.com/ru-ru/library/dd264741.aspx3

Ссылочные типы и адреса
•Адрес – совокупность двух 16-ти разрядных слов – начала (базы) сегмента и смещения.
•Сегмент - участок памяти, имеющий максимальную длину 64К.
•Сегменты адресуют память с точностью до параграфа (фрагмент памяти =16 байт).
•Смещение – линейная адресация в сегменте
•Смещение адресует память с точностью до
байта.
4

Объявление переменных (в любом месте в пределах класса): тип_данных список_имен;
Следующие объявления переменной k равносильны:
int k;
using System;
...Int32 k;
System.Int32 k;
Объявление переменной можно совместить с инициализацией:
int j=18;
Неявно типизированные локальные переменные
(в пределах метода, в заголовках циклов for, foreach):
5

Арифметические операторы
В C# определены следующие арифметические операторы.
+ Сложение
- Вычитание (также унарный минус)
* Умножение
/ Деление
% Взятие по модулю (остаток от деления)
++Инкремент
--Декремент
Арифметические операторы (+), вычитания (-),
(*) и (/) работают в C# так же, как в любом другом языке программирования,
они могут применяться к любым встроенным числовым типам данных.
6

Операторы инкремента и декремента
Оператор инкремента добавляет единицу к своему операнду,
оператор декремента вычитает единицу.
Следовательно, оператор
x = x + 1; то же, что и x++;
оператор
x = x - 1;
то же, что и x--;
Оба оператора могут указываться
либо до операнда (как префикс),
либо после (как постфикс).
Например, оператор x = x +1;
то же, что и
++x; // оператор указывается до операнда или так:
x++; // оператор указывается после операнда
7

Логические операторы
В C# существуют следующие операторы, возвращающие логические значения (типа bool): true (истина) и false (ложь):
операторы сравнения
==Равно
!=Не равно
>Больше чем
<Меньше чем
>=Больше или равно
<=Меньше или равно
8

логические операторы
& AND (И)
| OR (ИЛИ)
^ XOR (исключающее ИЛИ)
&& Short-circuit AND (быстрый оператор И)
|| Short-circuit OR (быстрый оператор ИЛИ)
! NOT (НЕ)
В C# операторы == и!= могут применяться ко всем объектам.
Операторы сравнения <, >, <=, >= применимы только к перечисляемым типам данных, которые упорядочены в своей структуре.
Следовательно, все операторы сравнения могут применяться ко всем числовым типам данных.
Однако значения типа bool могут сравниваться только на предмет равенства или неравенства, поскольку значения true и false не упорядочены.
Например, выражение true > false
в языке C# не имеет смысла.
9

Для логических операторов операнды должны иметь тип bool. Результатом логических операций также являются значения, имеющие тип bool.
В С# предусмотрены специальные быстрые версии логических операторов AND и OR,
при использовании которых программа будет выполняться быстрее.
10

Принцип выполнения быстрых операций
Если при выполнении оператора AND первый операнд имеет значение false,
результат - false,
независимо от значения второго операнда.
Если при выполнении оператора OR первый операнд имеет значение true,
результат - true,
независимо от значения второго операнда.
Следовательно, нет необходимости оценивать второй операнд,
программа будет выполняться быстрее,
второй операнд м.б. неопределенным.
11