【问题标题】:Are "IsFalse" and "IsTrue" basically just implicit conversion to boolean?“IsFalse”和“IsTrue”基本上只是隐式转换为布尔值吗?
【发布时间】:2016-07-10 23:59:33
【问题描述】:

“IsFalse”和“IsTrue”基本上只是隐式转换为 boolean 吗?我知道它们被短路运算符(AndAlso,OrElse)使用,但它们在功能或内部工作方面是否有任何不同,然后隐式转换为 boolean ?

【问题讨论】:

    标签: .net vb.net operators comparison-operators short-circuiting


    【解决方案1】:

    显式 转换为布尔值。

    您只能在代码中使用它们来定义您编写的结构的= True= False 评估,因此您必须定义规则来确定您的结构的哪个值等于真或假

    Public Structure p
        Dim a As Double
        Public Shared Operator IsFalse(ByVal w As p) As Boolean
            Dim b As Boolean
            ' Insert code to calculate IsFalse of w.
            Return b
        End Operator
        Public Shared Operator IsTrue(ByVal w As p) As Boolean
            Dim b As Boolean
            ' Insert code to calculate IsTrue of w.
            Return b
        End Operator
    End Structure
    

    这些运算符的返回值必须是 True 或 False

    查看此页面了解更多信息:https://msdn.microsoft.com/en-us/library/w6tz4ad8.aspx

    【讨论】:

    • 这些方法似乎有点不健康。我什至不知道它们的存在。如果我看到像“if myStruct AndAlso myOtherStruct then”这样的代码,我的第一反应是检查是否有人忘记打开严格编译。奇怪的是结构可以评估为真或假,但您必须查看其实现以找出是什么逻辑决定了它是真还是假。不管这个逻辑是什么,我宁愿明确地测试一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多