我无法初始化const:
分配给“路径”的表达式必须为常数(CS0133)
我的代码:
using System;
namespace study
{
class Program
{
static void Main(string[] args)
{
// Here I get this error
const string path = System.Environment.CurrentDirectory;
// This here is ok
string path = System.Environment.CurrentDirectory;
}
}
}
使用.ToString()
方法-也会遇到麻烦。
答案 0 :(得分:2)
问题是您试图将动态值分配给常量变量。
该常数必须是文字字符串(或现有常数),并且不得重新分配。
答案 1 :(得分:0)
您不能这样做,因为常量是编译时值。在编译程序时,它们不再作为命名实体存在,因为直接替换了值(来源:docs):
在此示例中,常数月份始终为12,即使类本身也不能更改。 实际上,当编译器在C#源代码中遇到常量标识符(例如,月份)时,它会将文字值直接替换为其生成的中间语言(IL)代码。在运行时与常量关联的变量地址,const字段不能通过引用传递,也不能在表达式中显示为l值。
即使这样做确实可行,您也只会在编译代码的计算机上拥有当前目录的值,而在运行代码的计算机上则只有当前目录的值。那没有多大意义。
虽然不能在方法中使用此方法,但是如果您需要诸如此类的全局“常量”值,则可以这样定义它们:
public static readonly string Path = System.Environment.CurrentDirectory;
尽管您为什么不只使用System.Environment.CurrentDirectory
,我也不知道。