有人能解释我哪里出问题了吗?
为了解释标题的变化,在测试项目中测试这个问题时,我发现有时会抛出这个问题,但并不总是这样(我知道这会使跟踪变得更加困难),在每一种情况下,我都以同样的方式调用类等等!
注RE答案-我已经在下面的答案标记为正确的,因为它确实解决了问题,即使没有人能够解释为什么会发生这个问题!
下面的第一个示例是简化的,以便于解释,对于完整的代码,请向下滚动。
我从xml中读到以下内容:
Return XElement.Value在这种情况下,.Value要么是“真”要么是“假”。
如果我取返回的值(这个q称为ReturnedString )并执行:
If ReturnedString Then
'some code
End If或
If CBool(ReturnedString) Then
'some code
End If它有时会在If语句Conversion from string "False" to type 'Long' is not valid.上抛出异常。
但
如果我这样做了:
Dim ReturnBol as Boolean = ReturnedString
If ReturnedBol then
'some code
End If一直都很好!
它只在从读取时发生。
xml是:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Root>
<_Weekly>
<_Flag>True</_Flag>
</_Weekly>
</Root>我确信我错过了一些显而易见的东西--谁能指点我(如果我错过了任何重要的信息,请大声喊一声)。
提前谢谢。
摘录代码:
读取代码位于一个类中,如下所示:
Public Class MyXml
Dim __Weekly As New _Weekly
Public Property Weekly As _Weekly
Get
Return __Weekly
End Get
Set(value As _Weekly)
End Set
End Property
Public Class _Weekly
Property Flag As String
Get
Return Readxml("_Weekly", "_Flag")
End Get
Set(value As String)
SaveToXml("_Weekly", "_Flag", value)
End Set
End Property
End Class
Private Shared Function Readxml(xmlItem As String, xmlname As String)
Readxml = Nothing
Dim CCXml As XDocument
If My.Computer.FileSystem.FileExists(XMLPath) Then
CCXml = XDocument.Load(XMLPath)
Dim xEl As XElement = (From El In CCXml.Root.Elements() Where El.Name = xmlItem).FirstOrDefault
If Not IsNothing(xEl) Then
Dim ChxEl As XElement = (From El2 In xEl.Elements() Where El2.Name = xmlname).FirstOrDefault
If Not IsNothing(ChxEl) Then
Return ChxEl.Value
End If
End If
End Function
End Class因此,要返回所做的字符串:
Dim myxml as New MyXml
If myxml.Weekly.Flag then
End If请不要给我讲筑巢课和所有的陷阱,我很清楚潜在的问题,但这恰好是我需要的(建议或建设性的批评,当然非常欢迎!)
发布于 2014-02-27 10:11:04
CBool是一个函数,用于将表达式转换为布尔数据类型。它的参数不能是字符串(除了"true“或”false“之外),这就是抛出异常的原因。
试一试
If CBool(ReturnedString = "True") Then
'some code
End If或
If CBool(ReturnedString.ToString()) Then
'some code
End If发布于 2014-02-27 13:24:42
要获得像True或False这样的字符串的相应布尔值,您应该使用:
Boolean.Parse(字符串值)
就你而言:
If Boolean.Parse(ReturnedString) Then
'some code
End If发布于 2014-02-27 15:02:59
如果存在或可以解析该值,则考虑使用Boolean.TryParse而不是Boolean.Parse。
https://stackoverflow.com/questions/22065083
复制相似问题