Класс objectкак универсальный тип данных
Если object является базовым классом для всех остальных типов и упаковка значений простых типов происходит автоматически, то класс object можно вполне использовать в качестве "универсального" типа данных. Для примера рассмотрим программу, в которой сначала создается массив типа object, элементам которого затем присваиваются значения различных типов данных.
// Использовать класс object для создания массива "обобщенного" типа.
using System;
class GenericDemo
{
static void Main()
{
object[] ga = new object[10];
//сохранить целые значения.
for (int i = 0; i < 3; i++)
ga[i] = i;
//сохранить значения типа double
for (int i = 3; i < 6; i++)
ga[i] = (double)i / 2;
//сохранить две строки, а также значения типа bool и char.
ga[6] = "Привет";
ga[7] = true;
ga[8] = 'X';
ga[9] = "Конец";
for (int i = 0; i < ga.Length; i++)
Console.WriteLine("ga[" + i + "] : " + ga[i] + " ");
}
}
Как показывает данный пример, по ссылке на объект класса object можно обращаться к данным любого типа, поскольку в переменной ссылочного типа object допускается хранить ссылку на данные всех остальных типов. Следовательно, в массиве типа object из рассматриваемого здесь примера можно сохранить данные практически любого типа. В развитие этой идеи можно было бы, например, без особого труда создать класс стека со ссылками на объекты класса object. Это позволило бы хранить в стеке данные любого типа.
Несмотря на то что универсальный характер класса object может быть довольно эффективно использован в некоторых ситуациях, было бы ошибкой думать, что с помощью этого класса стоит пытаться обойти строго соблюдаемый в C# контроль типов. Вообще говоря, целое значение следует хранить в переменной типа int, строку — в переменной ссылочного типа string и т.д.
ГЛАВА
Интерфейсы, структуры
И перечисления