MorFans Dev
折腾 - 开发 - 分享

C#中的&与&&的区别

C#中的&与&&的区别

今天写游戏,因为这个卡了很久,特意写一篇文章来记录一下两者的区别、
首先,它们都是“与”运算符(我以前还不知道有&)今天写消除类游戏碰巧撞到了,查了下MSDN,把区别贴出来,时时提醒自己。


&&

“条件“与”运算符 (&&) 执行其 bool 操作数的逻辑“与”运算,但仅在必要时才计算第二个操作数。”

也就是说
[v_act]如果 x 为 false,则不计算 y(因为不论 y 为何值,与操作的结果都为 false)。这被称作为“短路”计算。[/v_act]


&

为整型和 bool 类型预定义了二进制 & 运算符。对于整型,& 计算操作数的逻辑按位“与”。对于 bool 操作数,& 计算操作数的逻辑“与”;也就是说,当且仅当两个操作数均为 true 时,结果才为 true。

也就是说
[v_act]如果 x 为 false,会计算 y(但不论 y 为何值,与操作的结果都为 false)[/v_act]
下面的例子最能说明问题

class Demo
{
   static bool one() 
   {
      Console.WriteLine("one called");
      return false;
   }

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

   public static void Main() 
   {
      Console.WriteLine("regular AND:");
      Console.WriteLine("result is {0}", one() & two());//这里用的&
      Console.WriteLine("short-circuit AND:");
      Console.WriteLine("result is {0}", one() && two());//这里用的&&
   }
}

输出结果:

regular AND:
one called
two called
result is False
short-circuit AND:
one called
result is False

所以(|) 与 (||) 运算符也是一样的道理~就不另外说了
[!](&) 也可作为一元运算符,返回操作数的地址

赞赏
魔帆博客,版权所有 | 如未注明,均为原创
本站均采用 BY-NC-ND 协议 (署名-非商业性使用-禁止演绎) 进行授权。
转载请注明来自本站文章:C#中的&与&&的区别(https://www.morfans.cn/archives/1886)

野小新

文章作者

野小新很野~

发表回复

textsms
account_circle
email

C#中的&与&&的区别
今天写游戏,因为这个卡了很久,特意写一篇文章来记录一下两者的区别、 首先,它们都是“与”运算符(我以前还不知道有&)今天写消除类游戏碰巧撞到了,查了下MSDN,把区别贴出来,时时…
扫描二维码继续阅读
2016-09-15