我有以下类与私有重载的构造函数
 class Car
    {
        string _Make;
        string _Model;
        Car(string make, string model)
        {
            _Make = make;
            _Model = model;
        }
    }
然后我试图调用上面类的默认构造函数
class Daytona
{
    public int Foo()
    {
        Car c = new Car(); //COMPILATION ERROR
        return 0;
    }
}
请注意,这两个类都在同一名称空间中!
我无法使用其默认构造函数创建Car的实例.但是,无论我是否创建默认构造函数,我都应该能够访问默认构造函数.但我为什么会出现这个错误?
好的伙伴们,VS 2010发生了一件坏事,当我重新启动我的机器VS 2010编译了上面的代码.这样问题就解决了.
它是我的编译器,当我重新编译它时,再次带来错误,在行" Car c = new Car();"错误是MyNamespace.Car.Car(字符串,字符串)由于其保护级别而无法访问
但是我想将这个顶部拖到一个新区域,为什么有人想要创建一个私有构造函数?(以上代码仅供测试!)
public class Car
    {
        string _Make;
        string _Model;
        public Car(){}    
        public Car(string make, string model)
        {
            _Make = make;
            _Model = model;
        }
    }
改为公开,但如果你想在没有参数的情况下调用它,你还需要添加一个无参数构造函数.如果定义另一个构造函数(带参数),则不再隐式定义默认构造函数
您没有公共构造函数,class Car不需要传递参数.因此,您需要添加此构造函数.当您已经定义了另一个构造函数时,必须显式定义此构造函数.我还添加public了你已经拥有的构造函数.
public class Car
{
    string _Make;
    string _Model;
    public Car()
    {
        // Default constructor - does not require arguments
    }
    public Car(string make, string model)
    {
        _Make = make;
        _Model = model;
    }
}
如果您愿意,第二个构造函数仍然可以是私有的,但您无法直接调用它.
现在你可以做到:
Car A = new Car(); // Creates a new instance, does not set anything
Car B = new Car("MyMake", "MyModel"); // Creates a new instance, sets make and model