【问题标题】:Error in assigning object of nullable type in vb.net在 vb.net 中分配可为空类型的对象时出错
【发布时间】:2010-07-09 10:28:20
【问题描述】:

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

 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)

有人可以指导我吗?

【问题讨论】:

    标签: vb.net nullable


    【解决方案1】:

    你的第一行是:

    Dim testData As List(Of TestData) = Nothing
    

    然后在底部你做

    testData.Add(testData_List1)
    

    我看不到您在执行以下操作的任何地方:

    testData = New List(Of TestData)()
    

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

    【讨论】:

    • 仅此观察就告诉我他发布的代码不完整。 @Kangkan:如果不包含完整的代码示例,很难帮助您进行故障排除。
    • 抱歉发布不完整的代码。下次我会注意的。
    • 现在我已经纠正了这个问题, Nullable 属性还没有设置。有人可以调查一下吗?
    • @Kangkan:我不确定我是否理解,但我建议您使用当前代码更新上面的问题,但删除一些不相关的行以使其易于阅读。有时很难确定什么是相关的,但我建议删除所有 .MeterActiveError = 20.MeterApparentError = 14 等行,只需评论 ' setting various properties
    猜你喜欢
    • 2010-11-13
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    • 2019-05-30
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    相关资源
    最近更新 更多