Московский государственный университет имени М.В.Ломоносова
Опубликован: 01.11.2004 | Доступ: свободный | Студентов: 11275 / 456 | Оценка: 4.12 / 4.01 | Длительность: 19:20:00
ISBN: 978-5-9556-0077-9
Специальности: Программист
Лекция 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 >
Александр Демьяненко
Александр Демьяненко

Можно ли сдавать один и тот же тест несколько раз?
Или же один и тот же тест можно сдать лишь однажды?

Максим Стогний
Максим Стогний

Добрый день!

Скажите, пожалуйста, если в терминологии объектно-ориентированного программирования функции также называются методами или методами - членами класса, в примере объявления указателя на метод использовали в формальном описании оба названия:

тип_метода (имя_класса::*имя_метода_указателя)
    (список параметров);
тип_функции (*имя_ функции_указателя)
    (список параметров);

при этом можно было  тип_функции во втором описании заменить на тип_метода? Т.е.:

тип_метода (*имя_ метода_указателя)
    (список параметров);