无法设置字符串const System.Environment.CurrentDirectory;

时间:2019-07-26 01:44:33

标签: c# asp.net

我无法初始化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()方法-也会遇到麻烦。

2 个答案:

答案 0 :(得分:2)

问题是您试图将动态值分配给常量变量。

该常数必须是文字字符串(或现有常数),并且不得重新分配。

答案 1 :(得分:0)

您不能这样做,因为常量是编译时值。在编译程序时,它们不再作为命名实体存在,因为直接替换了值(来源:docs):

  

在此示例中,常数月份始终为12,即使类本身也不能更改。 实际上,当编译器在C#源代码中遇到常量标识符(例如,月份)时,它会将文字值直接替换为其生成的中间语言(IL)代码。在运行时与常量关联的变量地址,const字段不能通过引用传递,也不能在表达式中显示为l值。

即使这样做确实可行,您也只会在编译代码的计算机上拥有当前目录的值,而在运行代码的计算机上则只有当前目录的值。那没有多大意义。

虽然不能在方法中使用此方法,但是如果您需要诸如此类的全局“常量”值,则可以这样定义它们:

public static readonly string Path = System.Environment.CurrentDirectory;

尽管您为什么不只使用System.Environment.CurrentDirectory,我也不知道。