类型名称在哪里定义?

时间:2010-07-02 08:07:41

标签: c# types

当您获得变量的类型时,您可以检查其名称:

if (my_type.Name=="Int32")

然而写

会更优雅
if (my_type.Name==TypeNames.Int32)

避免拼写错误。我可以自己定义这样的类,但也许已经定义了某个地方?

如果是,在哪里?


注意:请避免疑惑“为什么你想首先得到变量的类型”,“最好使用'是'”等。非常感谢你!


编辑:同时,我跳到结论,忽略对象的类型(my_type变量)并检查对象就足够了。换句话说,my_type不是必需的。我忘记了空案例:-(更少的代码,更多的睡眠,这就是我需要的东西; - )

2 个答案:

答案 0 :(得分:16)

尝试以下

typeof(Int32).Name

如果你想比较类型,虽然通过名称这样做不是最好的解决方案,因为在许多情况下它会是错误的。直接比较类型更为正确。

if ( m_type == typeof(Int32) ) { 
  ...
}

答案 1 :(得分:2)

类型名称未在类中的任何位置定义。它们是在运行时由CLR(通过调用外部ConstructName函数)使用反射生成的。

使用JaredPar的建议将完成这项工作。