错误 - 'Is'需要具有引用类型的操作数,但此操作数的值类型为“Integer”

时间:2014-06-11 15:10:08

标签: xml vb.net

我是VB.NET的新手,虽然我在C#中有一些经验。我在.Net 2.0中的VB.NET代码中遇到以下错误。

错误

  

BC30020:'是'需要具有引用类型的操作数,但此操作数的值类型为'整数'。

以下行以红色突出显示

 If selectedParameterNode Is Not Nothing Then

XmlNodeinteger的原因是什么?我们如何解决它?

注意:我已将Why can't I check if a 'DateTime' is 'Nothing'?提及日期时间。但是这个问题适用于XMlNode

VB.NET

   Dim selectedParameterNode As XmlNode = objXml.SelectSingleNode("/ROOT/FPX[ParameterDesc = 'TEST33']/ParameterValue")
   Dim paramValue As String

   If selectedParameterNode Is Not Nothing Then
           paramValue = selectedParameterNode.InnerText
   End If

XML

<ROOT>

<FPX>
    <ParameterID>5</ParameterID>
    <ParameterDesc>Auto Cancel Case Labels When Change Destination</ParameterDesc>
    <ParameterType>BOOL</ParameterType>
    <MinValue>         &#x20;</MinValue>
    <MaxValue>         &#x20;</MaxValue>
    <ParameterValue>N</ParameterValue>
</FPX>

<FPX>
    <ParameterID>6</ParameterID>
    <ParameterDesc>Maximum Dozens Mfg WL</ParameterDesc>
    <ParameterType>NUMR</ParameterType>
    <MinValue>0         </MinValue>
    <MaxValue>10000     </MaxValue>
    <ParameterValue>999</ParameterValue>
</FPX>

<FPX>
    <ParameterID>7</ParameterID>
    <ParameterDesc>Maximum Dozens Assorted WL</ParameterDesc>
    <ParameterType>NUMR</ParameterType>
    <MinValue>0         </MinValue>
    <MaxValue>10000     </MaxValue>
    <ParameterValue>9999</ParameterValue>
</FPX>


</ROOT>

2 个答案:

答案 0 :(得分:1)

错误是Is Not语法错误。使用方法:

If selectedParameterNode IsNot Nothing Then...

似乎将单词分开将Not解释为表达式的一部分,例如(Not Nothing),这将是-1(令人惊讶的是,(Not Nothing)是合法的。)

答案 1 :(得分:1)

这是对Plutonix问题的澄清,尽管可能没有必要。

selectedParameterNode Is Not Nothing最终被解析为selectedParameter is (Not Nothing)

Not Nothing合法并解析为-1

您对selectedParameterNode Is -1的检查导致了您的特定语法错误。

可能的解决方案是:

正如Plutonix所说,

If selectedParameterNode IsNot Nothing Then...

或者:

If Not IsNothing(selectedParameterNode) Then...

或者只要您的类型支持<>运算符:

If selectedParameterNode <> Nothing Then...