将VB.net代码转换为C#.net

时间:2013-04-25 05:37:56

标签: vb.net c#-4.0

我正在研究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;
    }

感谢。

2 个答案:

答案 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();