Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Восстановление из объектного образа для пользовательских типов
Восстановление из объектного образа для пользовательских типов
Когда методу, предполагающему получение экземпляров System.Object, передаются пользовательские структуры или перечни, тоже происходит их приведение к объектному типу, Однако после получения входного параметра вызванным методом вы не сможете получить доступ к каким бы то ни было членам структуры (или перечня), пока не выполните операцию восстановлений из объектного образа для данного типа. Вспомним структуру МуРoint, определенную в этой главе выше.
Struct MyPoint {
public int x, у;
}
Предположим, что вы посылаете переменную MyPoint новому методу с именем UseBoxedMyPoint().
static void Main(string[] args) {
…
MyPoint p;
p.x = 10;
p.y = 20;
UseBoxedMyPoint(p);
}
При попытке получить доступ к полю данных MyPoint возникнет ошибка компиляции, поскольку метод предполагает, что вы действуете на строго типизованный System.Object.
static void UseBoxedMyPoint(object o) {
// Ошибка! System.Object не имеет членов-переменных
// с именами 'х' и 'у' .
Console.WriteLine ("{0}, {1}", о.х, о.у);
}
Чтобы получить доступ к полю данных MyPoint, вы должны сначала восстановить параметр из объектного образа. Сначала можно использовать ключевое слово C# is для проверки того, что этот параметр на самом деле является переменной MyPoint. Ключевое слово is рассматривается в главе 4, здесь мы только предлагаем пример его использования.
static void UseBoxedMyPoint(object о) {
if (о is MyPoint) {
MyPoint p = (MyPoint)o;
Console.WriteLine ("{0}, {1}", p.x, p.y);
} else Console.WriteLine("Вы прислали не MyPoint.");
}
Исходный код. Проект Boxing размещен в подкаталоге, соответствующем главе 3.
- Операции создания объектного образа и восстановления из объектного образа
- Восстановление из резервной копии
- Восстановление с использованием инструмента gbak
- Восстановление из резервных копий многофайловых баз данных
- Восстановление из резервной копии на системе-приемнике
- Восстановление поврежденной базы данных
- Восстановление "безнадежных" баз данных. InterBase Surgeon
- Расширенные возможности указания пользовательских планов
- Использование типов содержимого и столбцов
- 5.3 Классификация типов резервного копирования
- Еще о создании пользовательских меню
- Восстановление элементов списка из Корзины