【问题标题】:An unhandled exception of type 'System.NullReferenceException' - with structure“System.NullReferenceException”类型的未处理异常 - 具有结构
【发布时间】:2014-08-20 08:10:22
【问题描述】:

我有一个简单的问题,但是我连网都解决不了……不知道怎么回事。

我定义了一个变量:

Dim paczka(1) As SenditAPI.singleSizesData 

singleSizesData 是一个结构,我需要这个结构的数组

然后我尝试:

paczka(0).width = 10
paczka(0).height = 10
paczka(0).depth = 10
paczka(0).weight = 4
paczka(0).COD = 0
paczka(0).INS = 5
paczka(0).content = "Test"

我收到“'System.NullReferenceException' 类型的未处理异常”错误。我真的不知道为什么。

【问题讨论】:

  • 你在哪一行得到这个错误?我尝试了一个简单的例子和​​你的代码,它工作得很好。
  • @AdamHouldsworth 不,我还没有初始化,但我试过了,我在同一个地方遇到了同样的错误。在文档中写道singleSizesData 是一个数组结构。 @PradeepKumar 我在这一行得到了那个错误 - paczka(0).width = 10
  • 如果您在那一行遇到错误,那么您的singleSizesData 肯定不是一个结构而是一个类。这是因为不需要初始化结构,而类需要初始化(使用 new 关键字)。您可以通过在该行之前将其初始化为 paczka(0) = New SenditAPI.singleSizesData 来验证这一点。如果它有效,那么它肯定是一个类,而不是一个结构。请验证。

标签: .net arrays vb.net runtime-error structure


【解决方案1】:

您说SenditAPI.singleSizesData 是一个结构,但为了得到您遇到的错误,它必须是一个类,因为显然paczka(0) 为空且结构不能为空。所以问题是您创建了一个包含空引用的数组,然后您尝试取消引用导致异常。

在分配其成员之前,您必须创建一个新的 SenditAPI.singleSizesData 实例:

paczka(0) = new SenditAPI.singleSizesData
paczka(0).width = 10
paczka(0).height = 10
paczka(0).depth = 10
paczka(0).weight = 4
paczka(0).COD = 0
paczka(0).INS = 5
paczka(0).content = "Test"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    • 2013-09-04
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多