C# 构造函数调用静态类成员的增量是静态类成员的两倍
使用构造函数的C#特征很方便,但在这种情况下,它会影响最终结果C# 构造函数调用静态类成员的增量是静态类成员的两倍,c#,constructor,static,C#,Constructor,Static,使用构造函数的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
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++
。它将始终调用第三个函数,为您提供所需的结果。那么,当您知道在字符串构造函数中也会这样做时,为什么还要在void构造函数中增加numCar呢?这似乎是类上的错误。请从非静态构造函数之一中删除Car.numCar++或者这样做,因为有时这是可能的。更具体而言,考虑(在现实生活中)生产汽车,但没有人买它:它没有主人。