Odpowiednik reinterpret_cast C ++ w C #
Zastanawiam się, co jest odpowiednikiem C ++reinterpret_cast
w C # !?
Oto moja próbka:
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
Nie mam zastrzeżeń, dlaczegof
będzie null, ponieważ powinno być. Ale gdyby to był C ++, mógłbym napisaćFoo f = reinterpret_cast<Foo>(b);
i zdobądź to, czego chciałem. Co mogę zrobić, aby osiągnąć to samo w C #?
PS. Zakładam toBase
iFoo
są spójne pod względem danych.
[AKTUALIZACJA]
Oto prosty scenariusz, w którym areinterpret_cast
może być pomocne:
Rozważ pisanie biblioteki XXX-RPC, w której nie masz kontroli nad przychodzącymi parametrami ani podpisu usług do wywołania. Twoja biblioteka ma wywoływać żądaną usługę o podanych parametrach. Jeśli C # jest obsługiwanyreinterpret_cast
Mógłbym po prostureinterpret_cast
podane parametry do oczekiwanych i wywołaj usługę.