【发布时间】:2013-10-17 16:26:14
【问题描述】:
在 VB.NET 中,没有用于比较的 == 运算符,因此 = 运算符用于此目的以及赋值。我有一个函数,我希望它返回比较的布尔结果,而不是将结果存储在变量中:
Private Function foo() As Boolean
Dim bar As Integer = 1
Return bar = 2
End Function
返回:False
好的,但是bar 的值是多少?
Private Function foo() As KeyValuePair(Of Boolean, Integer)
Dim bar As Integer = 1
Return New KeyValuePair(Of Boolean, Integer)(bar = 2, bar)
End Function
返回:False, 1
看起来= 会在语句上下文需要时执行比较,但这有保证吗?也就是说,我可以确定bar 在这种情况下永远不会设置为 2 吗?
另外,我知道 VB.NET 不允许链式内联赋值,may be for the best。这种奇怪的= 行为是否会引起我应该注意的任何其他怪癖?
【问题讨论】:
-
在您的第一个示例中,将 Dim 更改为 Static 并在返回处放置一个断点。然后根据需要经常调用 foo,您会看到 bar 仍然是 1。其他发帖人之一指出,如果语句之前还有其他关键字,则 '=' 返回一个布尔值。
标签: vb.net