【发布时间】:2014-03-14 18:58:38
【问题描述】:
我在自定义类 Foo 中有一个 static readonly List<string> ValidatedProperties = new List<string>();,在 Foo 的构造函数中我调用了
protected Foo()
{
foreach(var prop in properties)
{
ValidatedProperties.Add(prop.Name);
Console.WriteLine(prop.Name);
}
}
当我创建一个新的 Foo 时,它会按预期打印出来,但是,每次我创建一个新的 Foo 时它都会这样做。
每次创建另一个 Foo 对象时是否会重新编写 ValidatedProperties?还是因为Console.WriteLine而再次显示每个属性?
【问题讨论】:
-
我不是 OP,但为什么投反对票?这个问题可能是基本的,但它格式正确、具体并且包含了 OP 尝试过的内容。如果我是初学者并且我搜索“静态成员被多次实例化”,这将是一个非常好的资源,这就是我认为投票系统的用途。
-
您究竟打算在这里做什么?每次创建
Foo的实例时,您都将properties添加到相同的List<string>。所以Foo.ValidatedProperties将包含Foo的每个实例中所有属性的列表。那是你打算做的吗?您的ValidatedProperties仅被实例化一次。 -
@EvanL:我没有投反对票,但我不同意这是一个特别好的问题。 OP 没有多次实例化静态成员,并且可能对这里的实例化实际含义感到困惑。
-
@MattBurland 我同意 OP 可能混淆,但我认为问题的格式不值得 2 次反对。我们是否应该在每次有人感到困惑时投反对票,从而提出一个问题来澄清?然而,我确实认为简单搜索
static的含义和readonly的含义可能会阻止这个问题。 -
@EvanL:就像我说的,我没有投反对票,但我也没有投赞成票。也许关闭更合适? (但我也没有投票)