|
|
|
Прежде чем разговаривать о том как работать с данными на C#, нужно поговорить о том, какие это могут быть данные.
Типы значения предназначены, являются обычными типами данных, представляющими значения, например, целые числа для типа int. Но значения могут быть и более сложными - типы значений делятся на несколько групп. Это могут быть структуры, перечисления, числовые типы (которые, в свою очередь делятся на целые, вещественные и тип decimal) и булевый тип.
Структуры являются аналогом классов, но в отличие от них являются типом значения. То есть, значения типа структура передаются по значению, а не по ссылке. Есть и другие отличия, которые будут обсуждены позднее. Синтаксис для объявления стркутуры очень похож на объявление класса:
public struct Point
{
public int x, y;
public Point(int p1, int p2)
{
x = p1;
y = p2;
}
}
|
Эта структура описывает точку на плоскости.
Переменные типа перечисления могут принимать одно из заданных (перечисленных) значений. Значения задаются при определении типа. Также бывают битовые перечисления, в которых значения могут комбинороваться.
Например, определим перечисление, описывающее время года:
public enum Season {Winter, Spring, Summer, Fall};
|
Для описания простых типов данных в C# сначала приведем сводную таблицу, а затем обсудим некоторые ее детали.
| Название типа | Диапазон значений | Размер |
|---|---|---|
| sbyte | -128..127 | Знаковое 8-битное целое |
| byte | 0..255 | Беззнаковое 8-битное целое |
| char | U+0000..U+FFFF | 16-битный Unicode-символ |
| short | -32.768..32.767 | Знаковое 16-битное целое |
| ushort | 0.65535 | Беззнаковое 16-битное целое |
| int | -2.147.483.648..2.147.483.647 | Знаковое 32-битное целое |
| uint | 0..4.294.967.295 | Беззнаковое 32-битное целое |
| long | -9,223,372,036,854,775,808..9,223,372,036,854,775,807 | Знаковое 64-битное целое |
| ulong | 0..18,446,744,073,709,551,615 | Беззнаковое 64-битное целое |
Из особенностей отметим наличие 64-битных чисел и представление всех символов как Unicode (соответственно отсутствют знковые/беззнаковые символьные типы).
| Название типа | Примерный Диапазон значений | Точность |
|---|---|---|
| float | +1.5E-45..+3.4E38 | 7 знаков |
| double | +5.0E-324..+1.7E308 | 15-16 знаков |
Decimal описывает 128-битный числовой тип. Он может быть как целым, так и вещественным с большой точностью, что делает его популярным для хранения денежных сумм.
| Название типа | Примерный Диапазон значений | Точность |
|---|---|---|
| decimal | 1.0E-28 to 7.9E28 | 28-39 значащих цифр |
Все типы значений представлены соответствующими типами .NET Framework из пространства имен System. Они наследуются от класса ValueType. Для каждого типа значения поддерживается соответствующий "упакованный" (boxed) тип, который является классом, реализующим то же поведение и содержащим те же данные. Если требуется передать тип значения по ссылке, он автоматически упаковывается (box) в соответствующий упакованный тип, а по прибытии при необходимости распаковывается (unbox) снова в тип значения. Находясь в упакованном виде, тип может использовать все методы класса System.ValueType. Например, допустима следующая конструкция:
string s = 54.ToString();
|
При этом значение 54 упаковывается в класс System.Int32, который наследует от класса System.ValueType метод ToString(), который и вызывается.
Ссылочные типы представлены классами, делегатами и интерфейсами. Важнейшими представителями являются классы object и string (им соответствуют классы System.Object и System.String .NET Framework)
Указатели доступны только в unsafe блоках и будут рассмотрены в соответствующей части.
| << Предыдущая | Следующая >> |
| Контакт | Реклама на сайте | Спонсорам | Веб мастерам |
Лицензионное соглашение
- © 2000-2012 dotSITE
Хостинг .NET предоставлен
PARKING.RU
Поддержку сайта осуществляет Murano Software Inc., Offshore software development