在vb.net中分配可空类型的对象时出错

时间:2010-07-09 10:28:20

标签: vb.net nullable

我是VB.net的新手并面临一个奇怪的情况。我有一个包含另一个结构的结构。内部结构可以为空。现在,我做的是以下内容。我创建了一个新的内部结构实例,设置成员变量并将整个结构分配给父结构的内部结构。但它给出了一个错误。作业不成功。如果我尝试在监视窗口中查看结构,则会为property evaluation failedHasValue属性显示“Value”。

 Dim testData As List(Of TestData) = Nothing

  Dim testData_List1 As New TestData
        With testData_List1.commonTestParam
            .AccuchekActiveEnergy = 2.56
            .AccuchekActiveEnergyUnit = ActiveEnergyUnit.KiloWattHour
            .AccuchekApparentEnergy = 34.56
            .AccuchekApparentEnergyUnit = ApparentEnergyUnit.VoltAmpereHour
            .AccuchekFrequency = 1
            .AccuchekRange = "20474 ewr 34324"
            .AccuchekType = AccuchekType.AccuchekOne
            .ActiveLoadRPhase = 145
            .AvgActiveLoad = 2.56
            .AvgActiveLoadUnit = ActiveLoadUnit.Watt
            .AvgPowerFactor = 0
            .AvgPowerFactorType = PowerFactorType.PFLag
            .ConditionalFlag1 = 0
            .ConsumerNo = "343122050242"
            .CurrentRPhase = 1
            .GeneralFlag1 = 0
            .InstantaneousPFRPhase = 2
            .ManufacturingYear = 2009
            .MeterActiveEnergy = 258.89
            .MeterActiveEnergyUnit = ActiveEnergyUnit.KiloWattHour
            .MeterActiveError = 20
            .MeterApparentError = 14
            .MeterConstant = 3200
            .MeterConstantUnit = MeterConstantUnit.RevsPerkVAh
            .MeterMake = "DS"
            .MeterSNo = "6563402"
            .MeterTypeAndClass = MeterTypeAndClass.MTCElectorMechWith20
            .MTFID = "123456789"
            .NoofTestRevolutions = 100
            .PulseCriteria = 0
            .RatedBasic = 25
            .RatedMax = 30
            .RatedVoltage = 15
            .ReactiveCurrentRPhase = 145
            .RemarkID = 0
            .TestDateAndTime = "100320101545"
            .TestDuration = 2145
            .TesterCode = 0
            .TestID = "147852"
            .TestMode = TestMode.TMOpticalScanner
            .TestNumber = 0
            .VoltageRPhase = 145
        End With

       Dim accuchek3TestParameters1 As New Accuchek3PhaseTestParameters

        With accuchek3TestParameters1
            .AccuchekReactiveLagEnergy = 2.46
            .AccuchekReactiveLagEnergyUnit = ReactiveEnergyUnit.KiloVoltAmpereReactiveHour
            .AccuchekReactiveLeadEnergy = 2.56
            .AccuchekReactiveLeadEnergyUnit = ReactiveEnergyUnit.KiloVoltAmpereReactiveHour
            .ActiveLoadBPhase = 14
            .ActiveLoadYPhase = 15
            .AvgApparentLoad = 10
            .AvgApparentLoadUnit = ApparentLoadUnit.KiloVoltAmpere
            .AvgReactiveLagLoad = 14
            .AvgReactiveLagLoadUnit = ReactiveLoadUnit.KiloVoltAmpereReactive
            .AvgReactiveLeadLoad = 15
            .AvgReactiveLeadLoadUnit = ReactiveLoadUnit.KiloVoltAmpereReactive
            .ConditionalFlag2 = 0
            .ConditionalFlag3 = 0
            .CTRatio = 1.23
            .CurrentBPhase = 10
            .CurrentYPhase = 11
            .InstantaneousPFBPhase = 0
            .InstantaneousPFYPhase = 1
            .MeterApparentEnergy = 1.01
            .MeterApparentUnit = ApparentEnergyUnit.KiloVoltAmpereHour
            .MeterReactiveLagEnergy = 1.25
            .MeterReactiveLagError = 1.25
            .MeterReactiveLagUnit = ReactiveEnergyUnit.KiloVoltAmpereReactiveHour
            .MeterReactiveLeadEnergy = 1.45
            .MeterReactiveLeadError = 1.56
            .MeterReactiveLeadUnit = ReactiveEnergyUnit.KiloVoltAmpereReactiveHour
            .PercentageLoad = 1
            .PTRatio = 1
            .ReactiveCurrentBPhase = 10
            .ReactiveCurrentYPhase = 11
            .VoltageBPhase = 10
            .VoltageYPhase = 10
        End With

        testData_List1.accuchek3TestParameters = accuchek3TestParameters1

        testData.Add(testData_List1)

有人可以指导我吗?

1 个答案:

答案 0 :(得分:3)

你的第一行是:

Dim testData As List(Of TestData) = Nothing

然后在底部你做

testData.Add(testData_List1)

我无法在任何地方看到你做的事情:

testData = New List(Of TestData)()

虽然它有点难以阅读,因为你有一个变量和类型的TestData作为他们的名字(或他们的名字的一部分),所以我可能只是错过了。