【问题标题】:In VIsual Basic how can I compare the types of two objects?在 VIsual Basic 中如何比较两个对象的类型?
【发布时间】:2018-05-08 16:46:25
【问题描述】:

我想知道两个对象是否具有相同的类型。我试过了

if TypeOf X = TypeOf Y

if TypeOf X is TypeOf Y

但这些都不是有效的 VB

有没有办法在一行中做到这一点,还是我只需要为每种可能的类型编写代码?

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

【问题讨论】:

  • x.GetType() = y.GetType()。或 x.GetType().IsAssignableFrom(y.GetType())。或 TryCast(x, y.GetType())。如果您不告诉我们您为什么需要这个,就很难猜出您真正想要什么。
  • 在我看来,这不是重复的,因为另一个问题是如何检查一个对象是否属于特定的已知类型,而不是检查两个不同的对象是否属于同一类型。相似且有帮助,但并不完全相同。

标签: vb.net object types


【解决方案1】:

正如 Hans 在 cmets 中提到的,如果您需要检查两个对象是否完全相同类型,您可以这样做:

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

但是,这可能不是您所需要的。如果您需要知道一个是否可以转换为另一个的类型(x 是派生类的实例,y 是其基类的实例),您可以这样做:

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

【讨论】:

  • 感谢汉斯和史蒂文。这完全回答了我的问题。这是我需要的 Hans 解决方案,因为我想确定我的对象属于哪个继承树。但我敢肯定,史蒂文的回答以后也会有用。我忘记了(或从未学过)GetType。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-29
  • 2013-10-15
  • 1970-01-01
  • 2020-09-12
  • 1970-01-01
相关资源
最近更新 更多