0

为什么下面的代码在尝试使用 ClientSocket 时会抛出对象引用错误?

我从 Interactive Brokers API 文档中复制了这个示例。

https://www.interactivebrokers.com/en/software/api/api.htm

我使用 IB 网关连接。

https://www.interactivebrokers.com/en/index.php?f=5041

我看过以下帖子,但仍然不清楚我在这里做错了什么。

什么是 NullReferenceException,我该如何解决?

在 myClient.ClientSocket 行上引发错误:

var myClient = new EWrapperImpl();

myClient.ClientSocket.eConnect("127.0.0.1", 7496, 0);

这是包装类:

public class EWrapperImpl : EWrapper
{
    EClientSocket clientSocket;

    public EWrapperImpl()
    {
        clientSocket = new EClientSocket(this);
    }

    public EClientSocket ClientSocket { get; set; }
}
4

1 回答 1

2

请注意,您在构造函数中初始化私有字段clientSocket(使用小写“c”),但访问公共字段或属性ClientSocket(使用大写“C”)。因此,您正在初始化一个从未使用过的字段,并尝试访问一个从未初始化的属性。

修复代码的最简单方法是删除私有字段并初始化属性:

public class EWrapperImpl : EWrapper
{
    public EWrapperImpl()
    {
        ClientSocket = new EClientSocket(this);
    }

    public EClientSocket ClientSocket { get; set; }
}
于 2016-03-09T09:39:21.827 回答