C# 指定给X的表达式必须是常量
我遇到了这个问题,正在寻找解决方案,但没有发现与我类似的情况。以下是我的情况: 在类文件X.cs中:C# 指定给X的表达式必须是常量,c#,compiler-errors,constants,C#,Compiler Errors,Constants,我遇到了这个问题,正在寻找解决方案,但没有发现与我类似的情况。以下是我的情况: 在类文件X.cs中: namespace BlaBla{ public class X{ public const string foo = "foo"; // other code } public class Y{ public const int bar = 0; } } 在另一节课上,我在写: private const string someString = X
namespace BlaBla{
public class X{
public const string foo = "foo";
// other code
}
public class Y{
public const int bar = 0;
}
}
在另一节课上,我在写:
private const string someString = X.foo + Y.bar + "";
它一直给我一个编译错误:
指定给someString的表达式必须是常量
虽然它们都是常数!当我删除Y.bar时,错误被删除,我不知道为什么。有什么帮助吗 您正在包括从
int
到string
的转换。即使int
是一个常量,转换也不被视为常量表达式
您可以更简单地演示:
class Test
{
const int X = 10;
const string Y = "X: " + X;
}
有关常量表达式的详细信息,请参见C#规范第7.19节。表达式看起来是常量,但需要求值才能算出值。您使用的
const
关键字错误。您可能希望将someString
定义为:
private readonly someString = X.foo + Y.bar;
当一个变量被标记为const
时,它们将被编译到程序集中,然后进行优化。当Y.bar
被定义为const
时,您隐式地调用了它的ToString()
方法,这使得它不是常量