对象引用未设置为对象的实例 - 错误 [重复]

Object reference not set to an instance of an object - Error [duplicate]

提问人:Sam 提问时间:6/23/2017 最后编辑:IgorSam 更新时间:6/23/2017 访问量:126

问:

我有一个枚举,它是数组列表(它是可选的,您最多可以添加 5 次项目)

Public DiseaseTreatment() As TreatmentsetDiseaseTreatment

Public Enum TreatmentsetDiseaseTreatment
'''<remarks/>
<System.Xml.Serialization.XmlEnumAttribute("01")>  _
Item01

''<remarks/>
Antibiotics
''<remarks/>
<System.Xml.Serialization.XmlEnumAttribute("02")>  _
Item02

'''<remarks/>
<System.Xml.Serialization.XmlEnumAttribute("Pain Killers)")>  _
PainKillers

Dim temptreatment As List(Of TreatmentsetDiseaseTreatment)= New List(Of TreatmentsetDiseaseTreatment)()
temptreatment.Add("Painkiller")
For i As Integer = 0 To temptreatment(i) - 1
   test.TreatmentTypes(i) = temptreatment(i)
Next

当我将鼠标悬停在它上面时,它有正确的字符串,所以我不明白它是如何投掷的?tempTreatment(i)"painkiller"NullReferenceException

数组 vb.net 列出 NullReferenceException

评论

0赞 Ňɏssa Pøngjǣrdenlarp 6/23/2017
枚举不是数组、列表或数组列表。它们只是枚举 - 带有名称的常量组。什么?TreatmentsetDiseaseTreatment
0赞 Sam 6/23/2017
对不起,我更新了代码。那是枚举名称,我已经复制了正确的行。我尝试了很多东西,但我根本没有得到它。我设法在没有上面的 DiseaseTreatment() 列表的 () 的情况下完成了所有操作。那我该如何处理呢?
1赞 Igor 6/23/2017
这是一个重复的,这可能是因为如此调用会抛出 NRE。testnulltest.TreatmentTypes(i)
1赞 Ňɏssa Pøngjǣrdenlarp 6/23/2017
从概念上讲,它是重复的。NRE只有一个原因,但这似乎是一个边缘情况。 未在任何地方初始化。我认为你正在做的事情离基地很远。如果某个值可以是治疗的组合,那么它需要是一个标志。当你可以很容易地获得枚举值或名称时,你为什么要这样做是一个谜test
1赞 Ňɏssa Pøngjǣrdenlarp 6/23/2017
是的,枚举从来都不是列表。

答:

4赞 Igor 6/23/2017 #1

您希望停在数组的末尾,而不是数组中 x 项的末尾。

For i As Integer = 0 To temptreatment.Count - 1

For i As Integer = 0 To temptreatment(i) - 1

评论

0赞 Sam 6/23/2017
“length is not a member of type list”我认为我做错了什么。我从未使用过列表和新 vb.net。我将尝试阅读更多关于列表以及如何使用枚举进行处理的信息。其他枚举直截了当,希望这个也是如此!干杯
0赞 Igor 6/23/2017
@Sam - 对不起,那不应该是.后者是数组的属性。CountLength
0赞 Sam 6/23/2017
是的,没错,但我仍然有错误。您能否推荐一个链接来了解具有列表类型的枚举(这与我以前使用枚举所做的枚举的唯一不同,您可以进行多种处理)如果您能将我引导到一个开始阅读的好地方,我将不胜感激。
0赞 Igor 6/23/2017
@Sam - 大多数内容都是针对 c# 的,但我认为它不会太复杂,无法轻松翻译成 vb.net。您正在搜索的内容称为枚举标志。这提供了将多个状态组合成一个值的能力。关键字浏览器搜索:.net 枚举标志
0赞 Sam 6/23/2017
谢谢!但是我的 Enum 类,我不打算改变它,他们没有使用 flag..我看得很快,但非常感谢你给我一些关于我遇到的这个问题的阅读材料。