由于没有默认构造函数,因此无法创建实例,但只有可用的构造函数不是公共的。如何从班级呼叫公共成员?

时间:2015-04-27 03:45:48

标签: c# .net api trading

我试图通过

来访问API交易头寸的信息
Position position = new Position();
int positionQuantity = position.Net;
Console.WriteLine("position amount is: " + positionQuantity);

然而,它给了我一条红线     新职位();

并且说T4.API.Position没有定义默认构造函数。

但是如果我去了

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,因为没有默认构造函数和唯一可用的构造函数不是公共的而是内部的?

2 个答案:

答案 0 :(得分:1)

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

  • 该类唯一的构造函数需要参数
  • 默认构造函数是私有的,就像在singleton中一样
  • 该类是静态的,无法实现,如System.IO.File
  • 该类是抽象的,被设计为您应该使用的类的基类,如System.Drawing.Image

我可能忘了列出一些原因,但我希望你能得到这样的结果:你有代码所以你可以自己看,我们没有......

答案 1 :(得分:0)

正如 MSDN 所说

  

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

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

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