比方說,你有C#爲什麼a = SomeFunction()會執行如果a == false?
class Program
{
static void Main()
{
bool a = GetFalse();
if (a)
{
a = GetTrue();
}
bool b = GetFalse();
b &= GetTrue();
}
static bool GetFalse() => (false);
static bool GetTrue() => (true);
}
爲什麼會GetTrue()
時b
已經是假的被執行?
不應該&=
運營商認識到它永遠不會評價爲真?
否 - '&='運營商等同於'X = X&y'並不會短路。 –
更簡單的解釋是&是一個按位運算符,並且要執行按位操作,您需要兩個操作數的二進制值,因此即使第一個操作數爲假,也需要執行第二個部分。 – zoubida13
@ zoubida13'&'在整型上只是一個按位運算符 - 它們都是布爾類型的布爾運算符。 –