【发布时间】:2011-06-17 21:21:45
【问题描述】:
public class Sample
{
static int count = 0;
public int abc;
public Sample()
{
abc = ++Sample.count;
}
}
我想创建一个上述类的数组,并希望通过调用默认构造函数来初始化数组中的每个元素,以便每个元素可以有不同的abc。所以我这样做了:
Sample[] samples = new Sample[100];
但这并没有做我认为应该做的事情。似乎这样默认构造函数没有被调用。创建数组时如何调用默认构造函数?
我也想知道上面的语句是做什么用的?
【问题讨论】:
-
你为什么不只使用数组索引,它的唯一性和根据你的代码自动递增
-
附带说明 - 代码不是线程安全的;您应该改用
id = Interlocked.Increment(ref count),并以static int count = 1开头(因为Interlocked.Increment返回旧 值)。 -
在上面的代码中,您刚刚声明了一个大小为 100 的数组,其中没有任何项目。
-
@Ivanov 如果他这样做了,当他从数组中拉出一个项目时,他将不会拥有该对象的唯一标识符。
-
旁注:但如果您不使用多线程 - 不要使用 Interlocked.Increment 而不是 ++。
标签: c# arrays default-constructor array-initialize