【发布时间】: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())