use*_*567 2 c# compiler-errors typeof tostring switch-statement
我正在尝试这样做:
const string intType = typeof(int).ToString();
switch (typeof(MyT).ToString())
{
case intType:
{
return "int";
break;
}
...
}
Run Code Online (Sandbox Code Playgroud)
但编译说:
错误CS0133:分配给'intType'的表达式必须是常量
据我所知,typeof运算符在编译时工作.那么,怎么了?
Eri*_*ert 13
据我所知,typeof运算符在编译时工作.
你不知道,因为知识必须是真实的.你在哪里得到了typeof在编译时执行的想法?它产生一个非常数对象.然后无法保证ToString每次运行时都不会生成不同的字符串,因此也不能将其视为常量.
那么,怎么了?
你是从错误的信念中推理出来的.
C#规范清楚地描述了表达式作为编译时常量必须满足的条件.这些条件包括不包含任何typeof运算符或方法调用的表达式.
但这里有更大的问题.我假设这MyT是一个泛型类型参数,这意味着您正在尝试打开泛型类型参数的值.这几乎总是错误的做法.
你真的想做什么?你真的想解决什么问题?因为到目前为止你所展示的这段代码表明你正在走一条非生产性的道路去解决真正的问题.