0
使用調用構造函數的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.numCar成員:
Car c= new Car();
Console.Write(car.numCar), // 2
我的問題是:如何保持兩個構造函數並避免這種行爲?我的目標是保持它們全部,但使用在控制檯上獲取的最後一條指令的值'1'。 謝謝
那麼當你知道這也是在字符串構造函數中完成時,爲什麼你還要在void構造函數中增加numCar?這似乎是你班上的錯誤。 – Steve
從非靜態構造函數 –
中刪除Car.numCar ++我這樣做是因爲有時它是可能的。更具體地說,考慮(在現實生活中)生產一輛汽車,但沒有人購買它:它沒有車主。 – atomicBee