C# & 和 && 的不同用场!

2024-11-23 16:30:14
推荐回答(3个)
回答1:

Console.WriteLine(1 == 1 & 1 == 1);
前后两个判断都会执行.
Console.WriteLine(1 == 1 && 1 == 1);
如果前面的判断为false则不执行后面的判断.直接返回false.

建禅含议用 && 这么做是有原历乎因的贺烂笑.

比如 tb 是一个TextBox
if(tb!=null & tb.Text==""){}
如果tb!=null的值为true,则这么写会出错.
因为不管tb!=null的值为true还是false都会去执行tb.Text=="".而当tb==null的时候是没有tb.Text的.

if(tb!=null && tb.Text==""){}
如果tb!=null的值为false则不会执行后面的判断.

回答2:

&&和||是用于条件判断,而&和|是位运算。

· 【&】

//相当于二进制减法;

//计算原理:数值转成二进制 > 二进制相减(遇0为0) > 再将二进制计算结果转成数值;

(1&1) = (0001 - 0001 = 0001) = 1

(1&2) = (0001 - 0010 = 0000) = 0

(2&2) = (0010 - 0010 = 0010) = 2

(7&5) = (0111 - 0101 = 0101) = 5

(7&8) = (0111 - 1000 = 0000) = 0

(8&4) = (1000 - 0100 = 0000) = 0

//如亮散搏:true = 0001, false = 0000

(true|false) = (0001 敬祥- 0000 = 0000) = false

(true|true) = (0001 - 0001 = 0001) = true

(false|false) = (0000 - 0000 = 0000) = false

· 【|】

//相当于二进制加法;

//计算原理:数值转成二进制 > 二进制相减(遇1为1) > 再将二进制计算结果转成数值;

(1|1) = (0001 + 0001 = 0001) = 1

(1|2) = (0001 + 0010 = 0011) = 3

(2|2) = (0010 + 0010 = 0010) 掘孙= 2

(7|5) = (0111 + 0101 = 0111) = 7

(7|8) = (0111 + 1000 = 1111) = 15

(8|4) = (1000 + 0100 = 1100) = 12

//如:true = 0001, false = 0000

(true|false) = (0001 + 0000 = 0001) = true

(true|true) = (0001 + 0001 = 0001) = true

(false|false) = (0000 + 0000 = 0000) = false

· 【&&】

//条件与

//其中一方为false则返回false

//左右两方同时为true则返回true

(true&&false) = false

(true&&true  ) = true

(false&&false) = false

· 【||】

//条件或

//其中一方为true则返回true

//左右两方同时为false则返回false

(true || false) = true

(true || true  ) = true

(false || false) = false

转载自

回答3:

&和加减乘除一样,可以对整数运算。比如8&4转成2进制是100&010,结果是0氏或兆如
&&只是0(false)和1(true)的运算。可以说是&的一个子集歼猜伍