C# Типы данных

В C# переменные можно разделить на следующие типы:

  • Типы значений
  • Ссылочные типы
  • Типы указателей

Типы значений

Переменным типа значения можно напрямую присвоить значение. Они являются производными от классаSystem.ValueType, от которого они произведены.

изменяется на "d", значение, хранящееся в области памяти 0X55 в "куче", изменяется. Поскольку адрес a2 совпадает с адресом a1, выходной результат — a b d.int、char、float, и они хранят числа, символы и числа с плавающей запятой соответственно. Когда вы объявляетеintтип, система выделяет память для хранения значения.

В следующей таблице перечислены типы значений, доступные в C# 2010:

TypeОписаниеОбласть действияЗначение по умолчанию
boolЛогическое значениеИстина или ЛожьFalse
байт8-битное беззнаковое целое числоот 0 до 2550
char16-разрядные символы UnicodeU+0000 до U+ffff'\0'
decimal128-разрядные точные десятичные значения с 28-29 значащими цифрами(-7.9 x 1028до 7.9 x 1028) / 100 до 28 0.0M
double64-битный тип с плавающей запятой двойной точности(+/-)5.0 x 10-324до (+/-)1.7 x 103080.0D
float32-битный тип с плавающей запятой одинарной точности-3.4 x 1038до + 3.4 x 10380.0F
int32-битный целочисленный тип со знаком-2,147,483,648 до 2,147,483,6470
long64-битный целочисленный тип со знаком-9,223,372,036,854,775,808 до 9,223,372,036,854,775,8070L
sbyte8-битный целочисленный тип со знакомот -128 до 1270
short16-битный целочисленный тип со знакомот -32,768 до 32,7670
uint32-битный беззнаковый целочисленный типот 0 до 4,294,967,2950
ulong64-битный беззнаковый целочисленный тип0 до 18,446,744,073,709,551,6150
ushort16-битный беззнаковый целочисленный типот 0 до 65,5350

Чтобы получить точный размер типа или переменной на конкретной платформе, можно использоватьsizeofметоды. Выражениеsizeof(type)возвращает размер памяти объекта или типа в байтах. В следующем примере получается [размер] на любой машинеintРазмер памяти типов:

Пример

using System;

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».

Другие расширения