Entspricht dem reinterpret_cast von C ++ in C #

Ich frage mich, was das Äquivalent von C ++ istreinterpret_cast in C # !?

Hier ist mein Beispiel:

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

Ich habe nichts dagegen, warumf wird null sein, da es sein sollte. Aber wenn es C ++ wäre, hätte ich schreiben könnenFoo f = reinterpret_cast<Foo>(b); und bekomme was ich wollte. Was kann ich tun, um dasselbe in C # zu erreichen?

PS. Ich gehe davon ausBase undFoo sind in Bezug auf die Daten konsistent.

[AKTUALISIEREN]

Hier ist ein einfaches Szenario, in dem areinterpret_cast könnte hilfreich sein:

Erstellen Sie eine XXX-RPC-Bibliothek, in der Sie weder die eingehenden Parameter noch die Signatur der aufzurufenden Dienste steuern können. Ihre Bibliothek soll den gewünschten Dienst mit den angegebenen Parametern aufrufen. Wenn C # unterstütztreinterpret_cast Ich könnte einfachreinterpret_cast Geben Sie die angegebenen Parameter in die erwarteten ein und rufen Sie den Service auf.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage