0

同じ名前空間を持つ 2 つのアセンブリがあるとします。それぞれに同じ名前のクラスが含まれていますが、各アセンブリには異なるメソッドがあります。

両方を別のアセンブリにロードし、このクラスのインスタンス (各アセンブリから 1 つ) を作成するとIsAssignableFrom、2 つのクラスのインスタンス間で true が返されますか?

どんな結果になるのか、ただただ興味があります。

また、A のインスタンスを B に割り当てることは可能でしょうか?

このシナリオでは、コンパイル前に参照されたアセンブリはなく、厳密な名前もありません。

4

2 に答える 2

2

あなたの型は、実際にその型であるか、その型を継承している場合にのみ、他の型に割り当てることができます。

IsAssignableFromメソッドは以下を返します。

"c と現在の Type が同じ型を表している場合、または現在の Type が c の継承階層にある場合、または現在の Type が c が実装するインターフェイスである場合、または c がジェネリック型パラメーターであり、現在の Type である場合は true c の制約の 1 つを表すか、c が値の型を表し、現在の Type が Nullable<c> (Visual Basic では Nullable(Of c)) を表している場合。"

あなたの場合、最初の 2 つの条件のみが適用されます。

あるタイプが別のタイプと同じ名前と名前空間を持っていても、それらが同じタイプになることはなく、タイプ間に何らかの関係がまったく作成されません。

(また、クラスのインスタンスをクラスの別のインスタンスに割り当てることはできません。参照型の場合、インスタンスをインスタンスではなく参照変数に割り当てます。インスタンスを変数に割り当てるとき、それはその型です。変数が現在参照しているインスタンスの型ではなく、代入を実行できるかどうかを決定する変数です。)

于 2013-06-08T19:18:57.527 に答える