C#中&與&&的區別

來源:互聯網
上載者:User
以前都沒怎麼注意兩者的區別(我甚至都不知道“&”),因為它們都是“與”運算子。我昨天看C#高編第三版的時候,才注意到這點,查了下MSDN,把區別貼出來,時時提醒自己。

二元運算子 (&) 為整型和 bool 類型預定義了二進位 & 運算子。對於整型,& 計算運算元的按位“與”。對於 bool 運算元,& 計算運算元的邏輯“與”;也就是說,若且唯若兩個運算元均為 true 時,其結果才為 true。條件“與”運算子 (&&) 執行布爾運算元的邏輯“與”運算,但如有必要,只計算第二個運算元。它與二元運算子 (&)很像,不同的是,如果 x 為 false,則不計算 y(因為不論 y 為何值,與操作的結果都為 false)。這被稱作為“短路”計算。

下面的例子最能說明問題

// cs_operator_logical_and.cs
using System;
class Test 
{
   static bool fn1() 
   {
      Console.WriteLine("fn1 called");
      return false;
   }

   static bool fn2() 
   {
      Console.WriteLine("fn2 called");
      return true;
   }

   public static void Main() 
   {
      Console.WriteLine("regular AND:");
      Console.WriteLine("result is {0}", fn1() & fn2());
      Console.WriteLine("short-circuit AND:");
      Console.WriteLine("result is {0}", fn1() && fn2());
   }
}

輸出:

regular AND:
fn1 called
fn2 called
result is False
short-circuit AND:
fn1 called
result is False

BTW
(&) 也可作為一元運算子,返回運算元的地址

PS.
(|) 與 (||) 運算子也是一樣的道理

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.