o
がNode *
であるかどうかをチェックし、そうであればd
のメソッドを呼び出します。C++のdynamic_castに相当するC#とは何ですか?
if (Node * d = dynamic_cast<Node *>(o)) d->do_it();
同等のものをC#で書くには、どのような方法が最短かつ/または最も効率的ですか?代わりに、それは、その後struct
あなたがC#でis
キーワードを使用することができ、この
if (o is Node) {
((Node)o).do_it();
}
、それに(as' 'の有効性の点で)構造体とクラスの違いの1を私にビート –
なぜ参照型に "is"演算子を使用しないのですか? 'if(oはノード){(oはノードとして).do_it();} } ' –
@JohnRuizあなたができなかった理由はありません。実際には、Nodeが構造体であるかクラスであるかに関係なく、2番目のメソッドは動作します。 – Servy