我是VB.NET的新手,虽然我在C#中有一些经验。我在.Net 2.0中的VB.NET代码中遇到以下错误。
错误
BC30020:'是'需要具有引用类型的操作数,但此操作数的值类型为'整数'。
以下行以红色突出显示
If selectedParameterNode Is Not Nothing Then
XmlNode
是integer
的原因是什么?我们如何解决它?
注意:我已将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>  </MinValue>
<MaxValue>  </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>
答案 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...