Московский государственный университет имени М.В.Ломоносова
Опубликован: 03.10.2006 | Доступ: свободный | Студентов: 1225 / 79 | Длительность: 09:08:00
Специальности: Программист
Лекция 6:

Простые типы данных

< Лекция 5 || Лекция 6: 123456 || Лекция 7 >

Типы данных языка C#

В языке C# нет базовых типов - все типы реализуются как классы библиотеки NET Framework. Однако язык C# имеет набор встроенных типов, которые рассматриваются как псевдонимы типов в пространстве имен System. Например, тип string - это псевдоним типа System.String, а тип int - псевдоним типа System.Int32.

C# поддерживает следующие встроенные типы:

  • bool - псевдоним класса System.Boolean ;
  • byte - псевдоним класса System.Byte ;
  • sbyte - псевдоним класса System.SByte ;
  • char - псевдоним класса System.Char ;
  • decimal - псевдоним класса System.Decimal ;
  • float - псевдоним класса System.Single
  • double - псевдоним класса System.Double ;
  • int - псевдоним класса System.Int32 ;
  • uint - псевдоним класса System.UInt32 ;
  • long - псевдоним класса System.Int64 ;
  • ulong - псевдоним класса System.UInt64 ;
  • object - псевдоним класса System.Object ;
  • short - псевдоним класса System.Int16 ;
  • ushort - псевдоним класса System.UInt16 ;
  • string - псевдоним класса System.String.

Все встроенные типы подразделены на группы:

  • целочисленные типы ( int, long, ulong );
  • вещественные типы ( float, double );
  • логический тип ( bool );
  • символьные типы ( char, string );
  • объектный тип ( object ).

Иерархия классов NET Framework имеет один общий корень - класс System.Object.

Все типы разделяются на две категории:

  • размерные типы ;
  • ссылочные типы.

При создании переменной размерного типа под нее в стеке выделяется определенный объем памяти, соответствующий типу этой переменной. При передаче такой переменной в качестве параметра выполняется передача значения, а не ссылки на него. Значение размерного типа не может быть равным null. К размерным типам относятся целочисленные и вещественные типы, структуры, перечислимые типы.

При создании переменной ссылочного типа память под созданный объект выделяется в куче. Ссылка всегда указывает на объект заданного типа.

В языке C# все массивы являются объектами. Базовым классом массива является класс Array пространства имен Systems.

Язык C# позволяет создавать следующие массивы:

  • одномерные массивы;
  • многомерные массивы;
  • невыровненные массивы.

Массивы относятся к ссылочным типам.

Одномерный массив можно создать одним из следующих способов:

  • отдельно объявить массив без указания размерности. Например:
    int[] myArr1;
  • создать уже объявленный массив с одновременной его инициализацией. Например:
    myArr1 = new int[] {1, 2, 3, 4};
  • отдельно объявить массив с указанием размерности и соответственно созданием объекта. Например:
    int[] myArr2 = new int [4];
  • объявить массив с одновременной его инициализацией (с указанием оператора new). Например:
    int[] myArr3 = new int[] {1, 2, 3, 4};
    string[] sColor = new string[] {
        "Yellow","Blue","Red"};
  • объявить массив с одновременной его инициализацией (короткая форма). Например:
    int[] myArr4 = {1, 2, 3, 4};

Отметим, что нельзя выполнять инициализацию массива в форме myArray5 = {1, 2}; для предварительно объявленного или уже созданного массива.

При создании многомерных массивов их размерность определяется числом запятых плюс один, указанных в квадратных скобках после типа массива. Формы создания многомерного массива аналогичны формам создания одномерного массива.

Например:

int[,] iArr1 = new int[8,2];

Невыровненный массив реализуется как массив массивов.

Например, массив из трех элементов, каждый из которых содержит двумерный массив, может быть описан следующим образом:

int[][,] iJaggedArr1 = new int [3][,] 
{ new int[,] { {1,1}, {8,8} },    		
    // первый элемент массива
 new int[,] { {5,5}, {6,6}, {7,7} },	
    // второй элемент массива
 new int[,] { {0,0}, {0,0}, {0,0} } 	
    // третий элемент массива
 };

Операторы new должны использоваться для создания каждого массива: первое вхождение оператора new создает одномерный массив, каждый из трех элементов которого также является массивом, а три следующих вхождения оператора new создают элементы как двумерные массивы.

В обычных массивах индексы элементов представляют собой подряд идущие целочисленные значения. Библиотека NET Framework предоставляет класс Collections.Hashtable, позволяющий создавать хэшированные массивы.

Например:

Collections.Hashtable hArr =  new 
    Collections.Hashtable();
hArr["i"] = 175;     
    // Значение индекса указывается 
    // типом string
< Лекция 5 || Лекция 6: 123456 || Лекция 7 >