【问题标题】:How to tell if an object's class is exactly what you've specified? Usage of "is" keyword [duplicate]如何判断一个对象的类是否正是你指定的? “is”关键字的使用[重复]
【发布时间】:2016-05-27 22:51:37
【问题描述】:

假设我有三门课

public class A { }
public class B: A { }
public class C: B { }

如果我要创建C objC = new C() 类型的对象并使用is 关键字来检查语句objC is B 的有效性,我将得到true 的结果。据我所知is 只检查将给定对象实例转换为指定类型的有效性。

对于我的应用程序中的一个案例,我需要知道/比较对象的特定类,以便在给定对象引用时,将其与某种类型进行比较,当且仅当它是该类型时才为真。

有办法吗?

【问题讨论】:

  • 听起来您的用例违反了 Liskov 替换原则。 C B 的一个实例。
  • 你可以做 objC.GetType() == typeof(C)
  • Object.ReferenceEquals(x.GetType(),y.GetType())

标签: c# types


【解决方案1】:

您可以使用typeofGetType 检查特定类型:

objC.GetType() == typeof(B) //false
objC.GetType() == typeof(C) //true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-28
    • 2015-03-01
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多