是否可以写出类似于下面的内容?
public const string[] Titles = { "German", "Spanish", "Corrects", "Wrongs" };
是否可以写出类似于下面的内容?
public const string[] Titles = { "German", "Spanish", "Corrects", "Wrongs" };
当前回答
为了我的需要,我定义了静态数组,而不是不可能的const,它工作: 公共静态字符串[]title ={"德语","西班牙语","纠正","错误"};
其他回答
你不能创建一个“const”数组,因为数组是对象,只能是对象 在运行时创建,const实体在编译时解析。
你可以将数组声明为“readonly”。这是 与const的效果相同,只是该值可以在运行时设置。它只能是 设置一次,之后它就是一个只读(即const)值。
为了完整起见,现在我们也有immutablearray供我们使用。这应该是真正不可变的:
public readonly static ImmutableArray<string> Titles =
ImmutableArray.Create(new[] { "German", "Spanish", "Corrects", "Wrongs" });
需要System.Collections.Immutable NuGet引用。
如果你在IReadOnlyList接口后面声明了一个数组,你会得到一个常量数组,在运行时声明常量值:
public readonly IReadOnlyList<string> Titles = new [] {"German", "Spanish", "Corrects", "Wrongs" };
在. net 4.5及更高版本中可用。
这是一种做你想做的事情的方法:
using System;
using System.Collections.ObjectModel;
using System.Collections.Generic;
public ReadOnlyCollection<string> Titles { get { return new List<string> { "German", "Spanish", "Corrects", "Wrongs" }.AsReadOnly();}}
它非常类似于做一个只读数组。
快速的解决方法,说不定对别人有帮助。我需要一个字符串[]作为Attribute的参数(在某些理论中为测试用例传递内联数据)。Readonly在这里没用。但是,我最后做的是:
const string foo = "a|b|c";
[InlineData(foo)]
public void Test(string fooString)
{
var foo = fooString.Split("|"); // foo == {"a","b","c"}
...
}