Energy
education

сайт для тех, кто хочет изучать энергетику

3. Типы данных

В C#, переменные делятся на следующие типы:

  • Значение
  • Ссылка
  • Указатель

Тип Значение

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

Переменные типа Значение содержат данные. Например int, char, float, содержат целые числа, символы и числа с плавающей запятой. Когда вы объявляете тип int, система выделяет память для хранения значения.

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

ТипПредставлениеДиапазонЗначение по умолчанию
boolBoolean valueTrue или FalseFalse
byte8-bit unsigned integerот 0 до 2550
char16-bit Unicode characterот U +0000 до U +ffff'\0'
decimal 128-bit precise decimal values with 28-29 significant digits (от -7.9 x 1028 до 7.9 x 1028) / 100 to 28 0.0M
double64-bit double-precision floating point typeот (+/-)5.0 x 10-324 до (+/-)1.7 x 103080.0D
float32-bit single-precision floating point typeот -3.4 x 1038 до + 3.4 x 10380.0F
int32-bit signed integer typeот -2,147,483,648 до 2,147,483,6470
long 64-bit signed integer type от -923,372,036,854,775,808 до 9,223,372,036,854,775,807 0L
sbyte8-bit signed integer typeот -128 до 1270
short16-bit signed integer typeот -32,768 до 32,7670
uint32-bit unsigned integer typeот 0 до 4,294,967,2950
ulong64-bit unsigned integer typeот 0 до 18,446,744,073,709,551,6150
ushort16-bit unsigned integer typeот 0 до 65,5350

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

    
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.

Тип Object

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

Когда тип Значение преобразуется в тип object, это называется boxing и наоборот, когда тип object преобразуется в тип Значение это называется unboxing.

    
object obj;
obj = 100; // это boxing
    
Тип Dynamic

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

Синтаксис объявления типа dynamic:

    
dynamic <variable_name> = value;
    

Например,

    
dynamic d = 20;
    

Тип dynamic похож на тип object за исключением того, что проверка типов для переменной типа object происходит при компиляциии, в то время как для переменных типа dynamic при работе программы.

Тип String

Тип String позволяет назначить любую строку в качестве значения переменной. Тип string содержиться в System.String class. Он является производным от типа object. Значения для типа string могут быть назначены с помощью строковых литералов в двух формах: кавычки и @кавычки.

Например,

    
String str = "Строка";
    

A @quoted string literal looks like:

    
@"Строка";
    

Пользовательские ссылочные типы: class, interface, или delegate.

Тип Указатель

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

Синтаксис объявления типа Указатель:

    
type* identifier;
    

Например,

    
char* cptr;
int* iptr;