使用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”。 谢谢
答案 0 :(得分:2)
从第二个构造函数中取出Car.numCar++
。它将始终调用第3个为您提供所需的结果。