首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发出将布尔值转换为字符串的命令(有时工作,但不是全部)

发出将布尔值转换为字符串的命令(有时工作,但不是全部)
EN

Stack Overflow用户
提问于 2014-02-27 10:03:22
回答 3查看 118关注 0票数 0

有人能解释我哪里出问题了吗?

为了解释标题的变化,在测试项目中测试这个问题时,我发现有时会抛出这个问题,但并不总是这样(我知道这会使跟踪变得更加困难),在每一种情况下,我都以同样的方式调用类等等!

注RE答案-我已经在下面的答案标记为正确的,因为它确实解决了问题,即使没有人能够解释为什么会发生这个问题!

下面的第一个示例是简化的,以便于解释,对于完整的代码,请向下滚动。

我从xml中读到以下内容:

代码语言:javascript
复制
Return XElement.Value

在这种情况下,.Value要么是“真”要么是“假”。

如果我取返回的值(这个q称为ReturnedString )并执行:

代码语言:javascript
复制
If ReturnedString Then
    'some code
End If

代码语言:javascript
复制
If CBool(ReturnedString) Then
    'some code
End If

它有时会在If语句Conversion from string "False" to type 'Long' is not valid.上抛出异常。

如果我这样做了:

代码语言:javascript
复制
Dim ReturnBol as Boolean = ReturnedString
If ReturnedBol then
    'some code
End If

一直都很好!

它只在从读取时发生。

xml是:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Root>
  <_Weekly>
    <_Flag>True</_Flag>
  </_Weekly>
</Root>

我确信我错过了一些显而易见的东西--谁能指点我(如果我错过了任何重要的信息,请大声喊一声)。

提前谢谢。

摘录代码:

读取代码位于一个类中,如下所示:

代码语言:javascript
复制
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

因此,要返回所做的字符串:

代码语言:javascript
复制
Dim myxml as New MyXml
If myxml.Weekly.Flag then

End If

请不要给我讲筑巢课和所有的陷阱,我很清楚潜在的问题,但这恰好是我需要的(建议或建设性的批评,当然非常欢迎!)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-27 10:11:04

CBool是一个函数,用于将表达式转换为布尔数据类型。它的参数不能是字符串(除了"true“或”false“之外),这就是抛出异常的原因。

试一试

代码语言:javascript
复制
If CBool(ReturnedString = "True") Then
    'some code
End If

代码语言:javascript
复制
If CBool(ReturnedString.ToString()) Then
        'some code
End If
票数 0
EN

Stack Overflow用户

发布于 2014-02-27 13:24:42

要获得像TrueFalse这样的字符串的相应布尔值,您应该使用:

Boolean.Parse(字符串值)

就你而言:

代码语言:javascript
复制
If Boolean.Parse(ReturnedString) Then
 'some code
End If
票数 0
EN

Stack Overflow用户

发布于 2014-02-27 15:02:59

如果存在或可以解析该值,则考虑使用Boolean.TryParse而不是Boolean.Parse。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22065083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档