构造函数调用两次静态类成员的增量

时间:2014-01-15 12:06:29

标签: c# constructor static

使用contructor召回的C#功能很方便,但在这种情况下它会影响最终结果。

class Car{

    protected static int numCar;
    public string Owner{get; private set;}

    static Car() { // CRL will set it at the first Car object allocation
        Car.numAuto = 0;
    }
    public Car():this("No One") {
        Car.numCar ++;
    }

    public Car(string owner)
    {
        Car.numCar ++;
        this.Owner=owner;
    }
    ...
    //other methods
    ...

}

然后,在Main()中,我使用默认构造函数声明并分配我的第一个Car对象...此操作将增加静态Car.numCar成员的两倍:

Car c= new Car();
Console.Write(car.numCar), // 2

我的问题是:如何保留两个构造函数并避免这种行为?我的目标是保持它们全部,但使用在我的控制台上获得的最后一条指令值“1”。 谢谢

1 个答案:

答案 0 :(得分:2)

从第二个构造函数中取出Car.numCar++。它将始终调用第3个为您提供所需的结果。