我想我想做的是非常基本的。代码示例清楚地显示了它。
class MyClass{
public string[] Bar;
}
MyClass Foo = new MyClass();
Foo.Bar = { "word", "word", "word" };
此代码在 Visual Studio C# 中给了我一个错误。 (只有赋值、调用、递增、递减和新对象表达式可以用作语句)
有没有更好的方法为类提供数组?数组可以是
const
对我来说。如何从外部向类提供(const)数组?
我不想使用构造函数,因为数组应该是可选的。
最佳答案
您只能使用 {}
初始化数组没有 new
运算符作为声明的一部分(反过来必须显式指定数组类型)。这与是否属于同一类无关:
int[] x = { 1, 2, 3 }; // Fine
x = { 4, 5, 6 }; // Fail
x = new[] { 7, 8, 9 }; // Implicitly typed array as of C# 3
x = new int[] { 10, 11, 12 }; // Works with all versions of C#
有关详细信息,请参阅 C# 4 规范的第 12.6 节(数组初始值设定项)、10.5(字段声明)、8.5.1(局部变量声明)和 7.6.10.4(数组创建表达式)。
回答您对 Darin 的帖子的评论:不,我可以想象您的意思,在任何意义上都没有“const”数组这样的东西。即使您将数组变量设为只读,如下所示:
private static readonly int[] Values = { 1, 2, 3 };
这只会使变量只读。
Values
将始终引用相同的数组对象(因此始终具有 3 个元素),但数组本身始终是可变的。如果你想建立一个只读集合,我建议使用 ReadOnlyCollection<T>
,可能通过 List.AsReadOnly() :private static readonly ReadOnlyCollection<int> Values =
new List<int> { 1, 2, 3 }.AsReadOnly();
关于c# - 从类外部初始化公共(public)类成员数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9553903/