无法创建实例,因为没有默认构造函数,但只有可用的构造函数不是公共的。如何从课堂上召集公众成员?



我正在尝试通过

Position position = new Position();
int positionQuantity = position.Net;
Console.WriteLine("position amount is: " + positionQuantity);

但是,它给了我一条红线 新职位();

并说T4。应用程序接口。位置未定义默认构造函数。

但是如果我去

Position position = default(Position); 
int positionQuantity = position.Net;
Console.WriteLine("position amount is: " + positionQuantity);

"对象引用未设置为对象的实例"

所以它希望我使用"new"关键字,但我不能,因为它说它没有默认构造函数

我打开了他们的 Position 类,它确实有一堆代表,我应该使用其中一个吗?

但是,没有默认构造函数,

它们确实有一个带有 3 个参数的构造函数,但是,它是一个"内部"

public class Position
{
    public delegate DelegateName(arg1, arg2, arg3);
    // a bunch of other delegates
    internal Position(arg1, arg2, arg3)
    {
        //properties, etc..
    }
    public int Net
    {
        get { return _net; }
    }
}

不确定如果我无法创建实例,如何调用成员 Net,因为没有默认构造函数并且唯一可用的构造函数不是公共的而是内部的?

类没有可用的默认构造函数可能有一些原因:

  • 类具有的唯一构造函数需要参数
  • 默认构造函数是私有的,就像在单例中一样
  • 该类是静态的,不能像System.IO.File那样实例化
  • 该类是抽象的,设计为应使用的类的基类,如System.Drawing.Image

我可能忘了列出一些原因,但我希望你明白:你有代码,所以你可以自己看到,我们没有......

正如MSDN所说

如果类不包含实例构造函数声明,则默认 自动提供实例构造函数该默认值 构造函数只是调用直接的无参数构造函数 基类。如果直接基类没有可访问的 无参数实例构造函数,则发生编译时错误。如果 该类是抽象的,然后声明了默认值的可访问性 构造函数受到保护。否则,声明的可访问性 默认构造函数是公共的。

除非类是静态的,否则没有构造函数的类是由 C# 编译器提供公共默认构造函数,以便启用类实例化。

在您的情况下,您必须将您的查询发布给 API 供应商,因为我们看不到代码,他们是解决问题的最佳医生