“IsFalse”和“IsTrue”基本上只是隐式转换为布尔值吗?
Posted
技术标签:
【中文标题】“IsFalse”和“IsTrue”基本上只是隐式转换为布尔值吗?【英文标题】:Are "IsFalse" and "IsTrue" basically just implicit conversion to boolean? 【发布时间】:2016-07-10 23:59:33 【问题描述】:“IsFalse”和“IsTrue”基本上只是隐式转换为 boolean 吗?我知道它们被短路运算符(AndAlso,OrElse)使用,但它们在功能或内部工作方面是否有任何不同,然后隐式转换为 boolean ?
【问题讨论】:
【参考方案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”这样的代码,我的第一反应是检查是否有人忘记打开严格编译。奇怪的是结构可以评估为真或假,但您必须查看其实现以找出是什么逻辑决定了它是真还是假。不管这个逻辑是什么,我宁愿明确地测试一下。以上是关于“IsFalse”和“IsTrue”基本上只是隐式转换为布尔值吗?的主要内容,如果未能解决你的问题,请参考以下文章
74 commons-lang3 中 BooleanUtils.isFalse 等价于 非(BooleanUtils.isTrue) 吗