Unetway

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

Переменные в C # подразделяются на следующие типы:

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

Тип значения

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

Типы значений напрямую содержат данные. Некоторые примеры - это int, char и float , где хранятся номера, алфавиты и числа с плавающей запятой соответственно. Когда вы объявляете тип int , система выделяет память для хранения значения.

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

Тип Описание Разрядность Значение по умолчанию
bool Boolean value True or False False
byte 8-bit unsigned integer 0 to 255 0
char 16-bit Unicode character U +0000 to U +ffff '\0'
decimal 128-bit precise decimal values with 28-29 significant digits (-7.9 x 1028 to 7.9 x 1028) / 100to 28 0.0M
double 64-bit double-precision floating point type (+/-)5.0 x 10-324 to (+/-)1.7 x 10308 0.0D
float 32-bit single-precision floating point type -3.4 x 1038 to + 3.4 x 1038 0.0F
int 32-bit signed integer type -2,147,483,648 to 2,147,483,647 0
long 64-bit signed integer type -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 0L
sbyte 8-bit signed integer type -128 to 127 0
short 16-bit signed integer type -32,768 to 32,767 0
uint 32-bit unsigned integer type 0 to 4,294,967,295 0
ulong 64-bit unsigned integer type 0 to 18,446,744,073,709,551,615 0
ushort 16-bit unsigned integer type 0 to 65,535 0

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

using System;

namespace DataTypeApplication {
   class Program {
      static void Main(string[] args) {
         Console.WriteLine("Size of int: {0}", sizeof(int));
         Console.ReadLine();
      }
   }
}

Когда приведенный выше код компилируется и выполняется, он производит следующий результат:

Size of int: 4

 Тип ссылки

Типы ссылок не содержат фактических данных, хранящихся в переменной, но они содержат ссылку на переменные.

Другими словами, они относятся к ячейке памяти. Используя несколько переменных, ссылочные типы могут ссылаться на ячейку памяти. Если данные в ячейке памяти изменяются одной из переменных, другая переменная автоматически отражает это изменение в значении. Пример встроенных ссылочных типов: object , dynamic и string .

Тип объекта

Тип объекта является конечным базовым классом для всех типов данных в C # Common System Type (CTS). Объект - это псевдоним для класса System.Object. Типы объектов могут быть назначены значения любых других типов, типов значений, ссылочных типов, предопределенных или определяемых пользователем типов. Однако перед назначением значений требуется преобразование типов.

Когда тип значения преобразуется в тип объекта, он называется бокс, а с другой стороны, когда тип объекта преобразуется в тип значения, он называется распаковкой .

object obj;
obj = 100; // this is boxing

Динамический тип

Вы можете сохранить любой тип значения в переменной динамического типа данных. Проверка типов для этих типов переменных выполняется во время выполнения.

Синтаксис для объявления динамического типа -

dynamic <variable_name> = value;

Например,

dynamic d = 20;

Динамические типы аналогичны типам объектов, за исключением того, что проверка типа для переменных типа объекта происходит во время компиляции, тогда как для переменных динамического типа происходит во время выполнения.

Строковый тип

Тип Строка позволяет назначать любые строковые значения переменной. Тип строки - это псевдоним для класса System.String. Он получен из типа объекта. Значение для строкового типа может быть назначено с использованием строковых литералов в двух формах: quoted и @quoted.

Например,

String str = "Tutorials Point";

Строковый литерал @quoted выглядит следующим образом:

@"Tutorials Point";

Пользовательские ссылочные типы: класс, интерфейс или делегат. Мы обсудим эти типы в следующей главе.

Тип указателя

Переменные типа указателя сохраняют адрес памяти другого типа. Указатели в C # имеют те же возможности, что и указатели на C или C ++.

Синтаксис для объявления типа указателя -

type* identifier;

Например,

char* cptr;
int* iptr;