VB.Net Anding一个字节和一个double

时间:2011-08-01 09:07:24

标签: vb.net primitive-types boolean-expression

在从另一个人VB.net项目到C#的代码转换过程中,我遇到了以下代码:

Public Sub New(ByVal lbytModuleAddress As Byte, ByVal lbytRelayStateMask As Byte)
    Dim lintCounter As Integer

    mbytModuleAddress = lbytModuleAddress
    For lintCounter = 0 To 7
        If lbytRelayStateMask And (2 ^ lintCounter) Then
            mblnRelayState(lintCounter) = True
        Else
            mblnRelayState(lintCounter) = False
        End If
    Next
End Sub

现在我试图将其转换为C#,但我对这条线的含义有点困惑:

If lbytRelayStateMask And (2 ^ lintCounter) Then
有人可以赐教我吗?它似乎在幕后发生了一些事情(不得不进一步检查)但是在此之前我只是想澄清这个if语句的结果。

我说的是,如果其中一个子表达式等于零则为假,否则为真?对不起,我对VB.net的速度不太高兴。

2 个答案:

答案 0 :(得分:2)

lbytRelayStateMask和(2 ^ lintCounter)导致BIT编号lintCounter,它是打开或关闭的。有点是布尔值。 AND是一个位操作,而不是IF中的AND

作者也可能写过:

mblnRelayState(lintCounter)=(lbytRelayStateMask And(2 ^ lintCounter))

答案 1 :(得分:0)

是的,我相信你的分析是正确的。