2017-11-24 24 views
0

2つのオブジェクトの型が同じかどうかを調べたいと思います。私はVIsual Basicでは、2つのオブジェクトの種類を比較するにはどうすればよいですか?

if TypeOf X = TypeOf Y 

if TypeOf X is TypeOf Y 

を試してみたが、これらのどちらが有効VBです

は1行でこれを行う方法はありますか、私はただのコードを作成する必要がありますそれぞれの可能なタイプ?

if (TypeOf X is Type1 AndAlso TypeOf Y is Type1) 
OrElse (TypeOf X is Type2 AndAlso TypeOf Y is Type2) 
... 
+3

可[オブジェクトが特定の種類であるかどうかをチェックする方法]の複製(https://stackoverflow.com/questions/6580044/how-to-check-if-an-object-is-a-ident-type) –

+1

x。 GetType()= y.GetType()。またはx.GetType()。IsAssignableFrom(y.GetType())。またはTryCast(x、y.GetType())。あなたがなぜこれを必要としているか教えてくれないときに、あなたが実際に望むものを推測するのは難しいです。 –

+0

私の意見では、2つの異なるオブジェクトが同じタイプであるかどうかを調べるのではなく、オブジェクトが特定の既知のタイプであるかどうかをチェックする方法があるので、重複しません。類似していると有用ですが、完全に同じではありません。 –

答えて

1

コメントでハンスで述べたように、あなたが2つのオブジェクトが互いに全く同じタイプであるかどうかを確認する必要がある場合、あなたはこのようにそれを行うことができます。

If x.GetType() = y.GetType() Then 

しかし、あなたが必要とするものではないかもしれません。その型が他の型にキャストできるかどうかを知る必要がある場合(xは派生クラスのインスタンスであり、yはその基本クラスのインスタンスです)、次のようにします。

If x.GetType().IsAssignableFrom(y.GetType()) Then 
+0

おかげでハンスとスティーブン。それは私の質問に完全に答えます。それは私のオブジェクトが属している継承ツリーのうちのどれが確実であるかを確認したいので、私が必要とするハンスのソリューションです。しかし、スティーブンの答えは後にも役立つだろう、私は確信しています。私はGetTypeについて忘れてしまった(または学ばなかった)。 – Peter

関連する問題