C# Типы данных
В C# переменные можно разделить на следующие типы:
- Типы значений
- Ссылочные типы
- Типы указателей
Типы значений
Переменным типа значения можно напрямую присвоить значение. Они являются производными от классаSystem.ValueType, от которого они произведены.
изменяется на "d", значение, хранящееся в области памяти 0X55 в "куче", изменяется. Поскольку адрес a2 совпадает с адресом a1, выходной результат — a b d.int、char、float, и они хранят числа, символы и числа с плавающей запятой соответственно. Когда вы объявляетеintтип, система выделяет память для хранения значения.
В следующей таблице перечислены типы значений, доступные в C# 2010:
| Type | Описание | Область действия | Значение по умолчанию |
|---|---|---|---|
| bool | Логическое значение | Истина или Ложь | False |
| байт | 8-битное беззнаковое целое число | от 0 до 255 | 0 |
| char | 16-разрядные символы Unicode | U+0000 до U+ffff | '\0' |
| decimal | 128-разрядные точные десятичные значения с 28-29 значащими цифрами | (-7.9 x 1028до 7.9 x 1028) / 100 до 28 | 0.0M |
| double | 64-битный тип с плавающей запятой двойной точности | (+/-)5.0 x 10-324до (+/-)1.7 x 10308 | 0.0D |
| float | 32-битный тип с плавающей запятой одинарной точности | -3.4 x 1038до + 3.4 x 1038 | 0.0F |
| int | 32-битный целочисленный тип со знаком | -2,147,483,648 до 2,147,483,647 | 0 |
| long | 64-битный целочисленный тип со знаком | -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 | 0L |
| sbyte | 8-битный целочисленный тип со знаком | от -128 до 127 | 0 |
| short | 16-битный целочисленный тип со знаком | от -32,768 до 32,767 | 0 |
| uint | 32-битный беззнаковый целочисленный тип | от 0 до 4,294,967,295 | 0 |
| ulong | 64-битный беззнаковый целочисленный тип | 0 до 18,446,744,073,709,551,615 | 0 |
| ushort | 16-битный беззнаковый целочисленный тип | от 0 до 65,535 | 0 |
Чтобы получить точный размер типа или переменной на конкретной платформе, можно использоватьsizeofметоды. Выражениеsizeof(type)возвращает размер памяти объекта или типа в байтах. В следующем примере получается [размер] на любой машинеintРазмер памяти типов:
Пример
namespace DataTypeApplication
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Размер int: {0}", sizeof(int));
Console.ReadLine();
}
}
}
Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:
Size of int: 4
Ссылочные типы
Ссылочные типы не содержат фактические данные, хранящиеся в переменной, но содержат ссылки на переменную.
Иными словами, они ссылаются на область памяти. Когда используется несколько переменных, ссылочные типы могут указывать на одну область памяти. Если данные в области памяти изменяются одной переменной, другие переменные автоматически отразят это изменение значения.Встроенныессылочные типы включают:object、dynamicиstring。
Тип object
Тип Object— это конечный базовый класс всех типов данных в общей системе типов C# (CTS). Object — это псевдоним класса System.Object. Следовательно, типу object (Object) можно присваивать значения любого другого типа (типы значений, ссылочные типы, предопределённые типы или пользовательские типы). Однако перед присваиванием значения требуется преобразование типа.
Когда тип значения преобразуется в тип object, это называетсяупаковкой; с другой стороны, когда тип object преобразуется в тип значения, это называетсяраспаковкой。
object obj; obj = 100; // 这是装箱
Динамический тип
В переменной динамического типа данных можно хранить значение любого типа. Проверка типов для таких переменных выполняется во время выполнения.
Синтаксис объявления динамического типа:
dynamic <variable_name> = value;
Например:
dynamic d = 20;
Динамические типы похожи на объектные типы, но проверка типов для переменных объектного типа происходит во время компиляции, а проверка типов для переменных динамического типа — во время выполнения.
Строковый тип
Тип stringпозволяет вам присваивать переменной любое строковое значение. Тип string (String) является псевдонимом класса System.String. Он наследуется от типа object (Object). Значения типа string (String) можно присваивать в двух формах: в кавычках и в @-кавычках.
Например:
String str = "example.com";
Строка в @-кавычках:
@"example.com";
В C# строку можно предварить символом @ (называется «verbatim string»), чтобы escape-символы (\) обрабатывались как обычные символы, например:
string str = @"C:\Windows";
Эквивалентно:
string str = "C:\\Windows";
В @-строке можно произвольно переносить строки; переносы строк и пробелы отступов учитываются в длине строки.
string str = @"<script type=""text/javascript"">
<!--
-->
</script>";
Пользовательские ссылочные типы включают: class, interface или delegate. Мы обсудим эти типы в следующих главах.
Типы указателей
Переменные типа указатель хранят адрес памяти другого типа. Указатели в C# имеют ту же функциональность, что и указатели в C или C++.
Синтаксис объявления типа указателя:
type* identifier;
Например:
char* cptr; int* iptr;
Мы обсудим типы указателей в главе «Unsafe Code».
Другие расширения