当您获得变量的类型时,您可以检查其名称:
if (my_type.Name=="Int32")
然而写
会更优雅if (my_type.Name==TypeNames.Int32)
避免拼写错误。我可以自己定义这样的类,但也许已经定义了某个地方?
如果是,在哪里?
注意:请避免疑惑“为什么你想首先得到变量的类型”,“最好使用'是'”等。非常感谢你!
编辑:同时,我跳到结论,忽略对象的类型(my_type变量)并检查对象就足够了。换句话说,my_type不是必需的。我忘记了空案例:-(更少的代码,更多的睡眠,这就是我需要的东西; - )
答案 0 :(得分:16)
尝试以下
typeof(Int32).Name
如果你想比较类型,虽然通过名称这样做不是最好的解决方案,因为在许多情况下它会是错误的。直接比较类型更为正确。
if ( m_type == typeof(Int32) ) {
...
}
答案 1 :(得分:2)
类型名称未在类中的任何位置定义。它们是在运行时由CLR(通过调用外部ConstructName
函数)使用反射生成的。
使用JaredPar的建议将完成这项工作。