Эквивалент C ++ reinterpret_cast в C #
Интересно, что эквивалентно С ++?reinterpret_cast
в C # !?
Вот мой образец:
class Base
{
protected int counter = 0;
}
class Foo : Base
{
public int Counter
{
get { return counter; }
}
}
Base b = new Base();
Foo f = b as Foo; // f will be null
У меня нет возражений, почемуf
будет нулевым, так как должно быть. Но если бы это был C ++, я мог бы написатьFoo f = reinterpret_cast<Foo>(b);
и получить то, что я хотел. Что я могу сделать, чтобы добиться того же в C #?
PS. Я предполагаю чтоBase
а такжеFoo
являются последовательными в отношении данных.
[ОБНОВИТЬ]
Вот простой сценарий, гдеreinterpret_cast
может быть полезно:
Попробуйте написать библиотеку XXX-RPC, в которой вы не можете контролировать ни входящие параметры, ни подпись вызываемых служб. Ваша библиотека должна вызвать запрашиваемую службу с заданными параметрами. Если C # поддерживаетсяreinterpret_cast
Я мог бы простоreinterpret_cast
Задать параметры в ожидаемые и вызвать сервис.