我正在研究C#.net。我有一个vb.net的代码,我想将这些代码转换为C#。 我完成了所有的任务,但在运行应用程序时,它给出了一个未设置为对象引用的对象错误。下面是我的VB.net代码。我在我的代码中使用了第三方ddl,因此ExchangeList是该类的一个类。
Private WithEvents moExchanges As ExchangeList
Private Sub RequestChartData()
Trace.WriteLine("Init")
moExchanges = moHost.MarketData.Exchanges
End Sub
现在下面是我的C#.code
Private Host moHost;
Private ExchangeList moExchanges;
private void RequestChartData()
{
Trace.WriteLine("Init");
moExchanges = moHost.MarketData.Exchanges;
}
感谢。
答案 0 :(得分:0)
如果没有看到更多代码,就无法100%确定地告诉您object not set to an object reference.
的来源,但错误似乎告诉您moHost
为空 - 换句话说,您没有还没有创建对象的实例。
因此,当您尝试在对象上调用MarketData.Exchanges
时(因此您可以将其分配给moExchanges
,它会抛出错误。
在代码中查找moHost
并确保您已经为其分配了该对象的实例(通过调用它的构造函数,如moHost = new Host()
或构造函数),这应该是修复你的错误。
<强>更新强>
您永远不会初始化moHost
。这一行:
private Host moHost;
简单地声明对象 - 此时它是null。因此,当您尝试访问任何实例方法/属性时,您将获得未设置为对象引用错误的对象。
您需要通过调用它的构造函数来创建moHost
的实例,如下所示:
private Host moHost = new Host();
构造函数可能需要参数 - 请查看第三方DLL的文档(IDE中的intellisense也可以告诉您需要哪些参数)。
这会照顾你的错误。
答案 1 :(得分:0)
()而不是:
Private Host moHost;
Private ExchangeList moExchanges;
我认为你需要把它写成:
Private Host moHost = New Host();
Private ExchangeList moExchanges = New ExhangeList();