为什么下面的代码在尝试使用ClientSocket时会抛出Object引用错误?
我从Interactive Brokers API文档中复制了此示例。
https://www.interactivebrokers.com/en/software/api/api.htm
我使用IB网关连接。
https://www.interactivebrokers.com/en/index.php?f=5041
我已经看过以下帖子,但目前还不清楚我在这里做错了什么。
What is a NullReferenceException, and how do I fix it?
在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; }
}
答案 0 :(得分:1)
请注意,您在构造函数中初始化私有字段clientSocket
(带有小写“c”),但访问公共字段或属性ClientSocket
(用大写的'C')。
因此,您正在初始化一个从未使用过的字段,并尝试访问从未初始化的属性。
修复代码的最简单方法是删除私有字段并初始化属性:
public class EWrapperImpl : EWrapper
{
public EWrapperImpl()
{
ClientSocket = new EClientSocket(this);
}
public EClientSocket ClientSocket { get; set; }
}