Console.WriteLine("Значение x в квадрате равно: " + х);

}

static int Sqr(object о) { return (int)о * (int)о;

}

}

Вот к какому результату приводит выполнение этого кода.

Значение х равно: 10

Значение х в квадрате равно: 100

В данном примере значение переменной х автоматически упаковывается при передаче методуSqr ().

Упаковка и распаковка позволяют полностью унифицировать систему типов в С#. Благодаря тому что все типы являются производными от классаobject,ссылка на значение любого типа может быть просто присвоена переменной ссылочного типаobject,а все остальное возьмут на себя упаковка и распаковка. Более того, методы классаobjectоказываются доступными всем типам, поскольку они являются производными от этого класса. В качестве примера рассмотрим довольно любопытную программу.

// Благодаря упаковке становится возможным вызов методов по значению! using System;

/

class MethOnValue { static void Main() {

Console.WriteLine(10.ToString() ) ;

}

}

В результате выполнения этой программы выводится значение 10. Дело в том, что метод ToString () возвращает строковое представление объекта, для которого он вызывается. В данном случае строковым представлением значения 10 как вызывающего объекта является само значение 10!

Класс object как универсальный тип данных

Если obj ect является базовым классом для всех остальных типов и упаковка значений простых типов происходит автоматически, то класс 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;

ga[9]    =    "Конец";

for(int i = 0; i < ga.Length; i++)

Console.WriteLine("ga[" + i + "]: " + ga[i] + " ");

}

}

Выполнение этой программы приводит к следующему результату.

да [ 0] : 0 да[1] : 1

да

[2] :

2

да[3] :

1.5

да [4] :

2

да[5] :

2.5

да[6] :

Привет

да

[7] :

True

да

[8] :

X

да

[9] :

Конец

Перейти на страницу:

Похожие книги