【问题标题】:Translating 'New' arrays from VB.Net to C#将“新”数组从 VB.Net 转换为 C#
【发布时间】:2011-12-09 11:51:44
【问题描述】:

我正在尝试将一些代码从 VB.Net 转换为 C#,但遇到了问题。

我要翻译的 Vb.Net 代码行是:

client.Applicants = New wcf_Integration.Applicant() {New wcf_Integration.Applicant}

我试着把它翻译成:

Client.Applicants = new wcf_Integration.Applicant[1];
Client.Applicants[0] = new Applicant();

但是,这给了我一个讨厌的“对象引用未设置为对象的实例”错误。

对此的任何帮助将不胜感激。 :)

【问题讨论】:

  • 嗯,c# 语法看起来不错 - 让我想知道申请人属性的吸气剂。你检查过吗?另外,仅供参考,如果需要,您可以像这样在一行中执行此操作:Client.Applicants = new [] { new wcf_Integration.Applicant() };

标签: c# vb.net arrays new-operator


【解决方案1】:

你也可以使用数组初始化语法

// Typed implicitly (type inferred by compiler).
Clients.Applicants = new[] { new Applicant(), ... };

// Typed explicitly.
Clients.Applicants = new Applicant[] { new Applicant(), ... };

【讨论】:

  • 感谢您的回复。 :) 仍然得到一个对象引用等错误。
  • 那么 Clients 为空,或者 Clients.Applicants 的属性设置器做了一些触发 NPE 的事情。
  • 谢谢!我有 Client = new ClientObject();在 Clients.Applicants = new []{new Application()} 之后;应该在之前的位置。愚蠢的错误!
【解决方案2】:

可能Client 为空。所以Client.Applicants 引发了一个异常。它与数组无关。

【讨论】:

    【解决方案3】:

    试试这个:

    var myApplicants = new wcf_Integration.Applicant[1];
    myApplicants[0] = new Applicant();
    

    【讨论】:

    • 甚至:Client.Applicants = new [] { new Applicant() };
    猜你喜欢
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多