c# - 从类外部初始化公共(public)类成员数组

标签 c# .net arrays

我想我想做的是非常基本的。代码示例清楚地显示了它。

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/

相关文章:

c# - 聚合值直到达到限制

c# - 更新 XAttribute 值,其中 XAttribute 名称 = X

python - 迭代一个 numpy 矩阵行

c# - CaSTLe.Windsor IoC-容器特定配置

c# - 将 CSV 导入 SQL 多表

c# - 使用 WMI 更改远程计算机上的用户密码

java - 用逗号分割字符串,然后将其放入树形图中

c# - ServiceStack - 如何在一项服务中托管多个版本端点?

.net - 在生产中部署 Windows 服务 - .NET

java - 在 Java 8 中如何连接不带分隔符的 String[]?