Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Desktop_1 / 2010_150 Акчурин - Программирование на языке C#.doc
Скачиваний:
201
Добавлен:
10.06.2015
Размер:
5 Мб
Скачать
☆
      1. Типы в базовых классах .Net, c# и cil

В таблице показаны соответствия между базовыми классами .NET, ключевыми

словами C# и представлениями CIL. Кроме того, приведены сокращенные константные обозначения для каждого типа в CIL. Как будет показано чуть позже, именно на такие константы очень часто ссылаются многие коды операций в CIL.

Базовый класс

.NET

Ключевое

слово в C#

Представление

CIL

Константная

нотацияCIL

System.SByte

sbyte

int8

I1

System.Byte

byte

unsigned int8

Ul

System.Intl6

short

intl6

I2

System. UIntl6

ushort

unsigned intl6

U2

System.Int32

int

int32

I4

System.UInt32

uint

unsigned int32

U4

System.Int64

long

int64

I8

System. UInt64

ulong

unsigned int64

U8

System.Char

char

char

CHAR

System.Single

float

float32

R4

System.Double

double

float64

R8

System.Boolean

bool

bool

BOOLEAN

System.String

string

string

-

System.Object

object

object

-

System.Void

void

void

VOID

      1. Пользовательские типы данных

Как показал опыт платформы Java, которая была разработана задолго до платформы .Net, одной из основных причин ухудшения производительности Java-программ является медленная работа сборщика мусора, вызванная большим количеством мелких объектов в куче. Это явление можно наблюдать в двух случаях:

  • Интенсивное создание временных объектов с очень малым временем жизни. Зачастую такие объекты создаются и используются в теле одного метода.

  • Использование гигантских массивов объектов, при котором в массиве хранятся ссылки на огромное количество небольших объектов.

Разработчиками .Netбыл подмечен тот факт, что использование типов-значений вместо объектов позволяет избежать описанных выше проблем, потому что:

  • временные значения хранятся не в куче, а непосредственно в локальных переменных метода;

  • в массивах типов-значений содержатся не ссылки на значения, а непосредственно сами значения.

Поэтому в общую систему типов были добавлены так называемые пользовательские типы-значения. Эти типы могут быть объявлены программистом, но, как и встроенные типы-значения, размещаются не в куче, а в ячейках. Пользовательские типы-значения делятся на структуры и перечисления.

Структурыявляются аналогом классов. Они, как и классы, могут содержать поля, методы, свойства и события. Все структуры неявно наследуют от библиотечного класса System.ValueType, и, более того, встроенные типы-значения также наследуют от этого класса. Cистема типов не предусматривает никакого наследования структур, кроме данного неявного. Другими словами, структуры не могут наследоваться друг от друга и, тем более, не могут наследоваться от классов (кроме System.ValueType).

Перечисления представляют собой структуры с одним целочисленным полем Value. Кроме того, перечисления содержат набор констант, определяющих возможные значения поля Value. При этом для каждой константы в перечислении хранится ее имя. Перечисления неявно наследуют от библиотечного класса System.Enum, который, в свою очередь, является наследником все того же класса System.ValueType.

Соседние файлы в папке Desktop_1