C# 将装箱类型评估为C中的类型#

C# 将装箱类型评估为C中的类型#,c#,types,unboxing,C#,Types,Unboxing,我的应用程序使用一个已装箱的类型对象,在取消装箱之前,我稍后需要评估该对象是否为类型。这是这样实现的 public void MyFunc(params Object[] args) { Debug.Assert(args[0].GetType().Equals(typeof(Type))); } 即使我可以在调试器中检查参数并确定它是正确的,但它的计算结果始终为false。有什么想法吗?指出,您可能试图将RuntimeType与类型进行比较 通过使用模式匹配,您可以查看所讨论的对象是

我的应用程序使用一个已装箱的
类型
对象,在取消装箱之前,我稍后需要评估该对象是否为
类型
。这是这样实现的

public void MyFunc(params Object[] args)
{
    Debug.Assert(args[0].GetType().Equals(typeof(Type)));
}
即使我可以在调试器中检查参数并确定它是正确的,但它的计算结果始终为false。有什么想法吗?

指出,您可能试图将RuntimeType与类型进行比较

通过使用模式匹配,您可以查看所讨论的对象是否派生自以下类型:

args[0] is Type

我想你想要的是:它可能是一个
运行时类型。另请参见,您可能希望使用
typeof(Type).IsAssignableFrom(args[0].GetType())
。“Type”本身就是一个类型,因此您可能更倾向于使用
Debug.Assert(args[0].GetType().Equals(typeof(MyType))
,其中
MyType
是您的特定类型。请注意,如果
args[0]
的类型是从
MyType
派生的类,则代码行也返回false。添加到@p.s.w.g的注释中,
args[0]is type
将返回true,前提是
args[0]
可分配给类型,而不是检查它是否准确。@Rhaokiel!把它贴出来作为回答,我会接受的。