私はいくつかの助けが必要です。それはかなり簡単です。私はこのコードを手に入れました。正しいかどうか、あるいはより良いやり方を提案したい場合は、議論したいと思います。私は答えについて考えていますが、あなたの答えを見たいと思います。それは内にある場合ので、nullであると#とのキャスティング
(ClassB)myObjectB.MethodJustInB();
をし、それをチェックする必要はありません。ここでは、私はちょうどやって、後にすべての場合は、新しいオブジェクトを作成する必要がないと思います
if (myObject is ClassA)
{
var myObjectA = myObject as ClassA;
myObjectA?.MethodJustInA();
}
else if (myObject is ClassB)
{
var myObjectB = myObject as ClassB;
myObjectB?.MethodJustInB();
myObjectB?.OtherMethodJustInB();
}
を行きます
おかげ
あなたは 'as'を必要としませんすでにタイプをチェックしている場合は、直接キャストできます。ここでは不可能なキャストが失敗する可能性がある場合、 'as '演算子は便利です。 –
*既存のオブジェクトをキャストしていない新しいオブジェクト*を作成する必要はありません。それらは参照型であるため、変更可能です – Liam
@TimSchmelterそうでないのは悪いですか?同様に、私は '(ClassA)myObject.MethodJustInB();'または '(myObject as ClassB).MethodJustInB();'のようにすることができます。その場合の違いは何ですか? – Cataklysim