这怎么可能不是一个恒定的价值?

Ada*_*lor 2 c# const

我知道这可能只是一个术语不匹配,但如果我没有弄错,我相信c#是?除非我错过了一些明显的东西?

...
    private const uint URL_COUNT = 18;
    private string[] _urls;

    public Redirector()
    {
        this._urls = new string[URL_COUNT];
        ...
    }
...
Run Code Online (Sandbox Code Playgroud)

结果"预期值为常量值"并在数组定义中强调URL_COUNT ??

什么URL_COUNT如果它不是一个常量 -ant价值?!?!

编辑 Phew,我想了一会然后我发疯了.我很高兴没有人可以重复这一点,因为这意味着它只是一个本地的事情.谢谢你的帮助.

Raz*_*zie 9

当您提供尺寸长度和数组初始值设定项时,这将无法编译.例如:

this._urls = new string[URL_COUNT];
Run Code Online (Sandbox Code Playgroud)

会很好,但是:

this._urls = new string[URL_COUNT] { "One", "Two" };
Run Code Online (Sandbox Code Playgroud)

将不会.后者需要不断表达.请注意,const变量不是常量表达式,只是常量值.从C#规范(3.0)参数12.6:

当数组创建表达式包括显式维度长度和数组初始值设定项时,长度必须是常量表达式,并且每个嵌套级别的元素数量必须与相应的维度长度匹配.


And*_*are 5

这是一个常数,应该可以正常工作.使用C#3编译器为我编译以下代码:

using System;

class Foo
{
    private const uint URL_COUNT = 18;
    private string[] _urls;

    public Foo()
    {
        this._urls = new string[URL_COUNT];
    }
}
Run Code Online (Sandbox Code Playgroud)