使用构造器的 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++
。它将始终调用第三个,为您提供所需的结果。