Private Function foo() As Boolean Dim bar As Integer = 1 Return bar = 2End Function
返回:False
好吧,但是酒吧的价值是什么?
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.这奇怪的行为是否导致我应该注意的任何其他怪癖?
解决方法@H_404_29@ 你不能在VB中进行内联赋值,Assignment是一个明确的声明:[Let] <<target-reference>> = <<value-Expression>>
Let是可选的和隐含的,几乎不再使用.可以用来区分[Let]命令和等式测试的一般规则是,对于Let,语句中的目标引用之前不能有其他关键字. AFAIK,在=作为相等测试的所有情况下,在语句中都有一个或多个其他关键字.
在您的第一个示例中,关键字Return在您的=之前,因此它是一个相等测试,而不是一个赋值.
在你的第一个例子中,你可以做到:
Return 2
要么
bar = 2Return bar
至于你的问题“好吧,但是酒吧的价值是什么?”,酒吧仍然等于一个.
=在VB中没有怪癖.它完全按照记录的方式工作,并且始终具有(包括其前身BASIC,直到1968年).
总结以上是内存溢出为你收集整理的vb.net – 什么时候执行比较而不是赋值?全部内容,希望文章能够帮你解决vb.net – 什么时候执行比较而不是赋值?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)