什么是这个sytax在VB中的含义"如果(a& b)"

时间:2016-01-11 16:40:00

标签: c# vb.net if-statement translate

我试图将某个代码翻译成c#。

基本上我理解我处理的大部分代码,甚至是原始代码的意图。 但是我想确保我的所有基地都被覆盖了。

这是该主题的第5篇帖子:http://www.pcreview.co.uk/threads/how-to-use-getwindowlong-properly-in-vb-net.1312789/ 用户Kresimir

有问题的代码:

Dim ret As Integer = User32DLL.GetWindowLong(Me.Handle, -16)
Dim s As String = String.Empty
If (ret And WS_BORDER) Then s &= "WS_BORDER" & NewLine

我不明白" If(ret和WS_BORDER)"声明应该做,以及如何将其转换为C#

是吗:

    if (ret!=null & WS_BORDER!=null)

或其他什么?

谢谢。

编辑:注意。如果我使用上面提到的C#语句,VS会给我一个通知"表达式的结果总是为false,因为类型为" int"绝不等于" null"类型" int?" ^我想我可以忽略它(在我们说话的时候谷歌搜索),但如果sm1希望给我一个免费的解释"我很感激:*

PS。我真的很喜欢这个,所以如果我忽略了一些明显的事情,我很抱歉。

2 个答案:

答案 0 :(得分:6)

之前的答案都没有:

if((ret & WS_BORDER) != 0)

这是检查变量是否包含标志,在本例中为WS_BORDER。

答案 1 :(得分:-1)

这是一种按位逻辑运算。当Visual Basic将数字数据类型值转换为布尔值时,0变为False,所有其他值变为True。所以如果声明不是0:

User32DLL.GetWindowLong(Me.Handle, -16)

...并且WS_BORDER不是假的,结果将是真的。如果其中一个为假,则结果为false。