构造函数调用递增静态类成员的两倍



使用构造器的 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"。谢谢

只需从

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

最新更新