我正在尝试这样做:
const string intType = typeof(int).ToString();
switch (typeof(MyT).ToString())
{
case intType:
{
return "int";
break;
}
...
}
但编译器说:
错误CS0133:分配给“intType”的表达式必须是常量
我所知,typeof
运算符在编译时工作。那么,出了什么问题呢?
据我所知,typeof 运算符在编译时工作。
你不know那是因为知识必须true。你从哪里得到这个想法typeof
是在编译时执行的吗?它产生一个非常量对象。然后就不能保证ToString
每次运行时不会产生不同的字符串,因此它也不能被视为常量。
那么,出了什么问题呢?
你是根据错误的信念进行推理的。
C# 规范清楚地描述了表达式成为编译时常量必须满足的条件。这些条件包括不包含任何内容的表达式typeof
运算符或方法调用。
但这里还有更大的问题。我假设MyT
是泛型类型参数,这意味着您正在尝试打开泛型类型参数的值。这几乎总是错误的做法。
你到底想做什么?你真正想解决什么问题?因为到目前为止您所显示的这段代码表明您正在走一条毫无成效的道路来解决真正的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)