Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
тюмгу / Лекции КБ ИБАС 1 курс 2 семестр / лекция5 Безопасность 2018.pptx
Скачиваний:
13
Добавлен:
08.12.2019
Размер:
170.98 Кб
Скачать

Типы данных языка 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