" &= "运算符的意思

splory 2009-04-11 05:04:55
今天见到个很奇怪的东东,代码如下:

private bool ColumnEqual(object objectA, object objectB)
{
if (objectA == DBNull.Value && objectB == DBNull.Value)
{
return true;
}
if (objectA == DBNull.Value || objectB == DBNull.Value)
{
return false;
}
return (objectA.Equals(objectB));
}

private bool RowEqual(DataRow rowA, DataRow rowB, DataColumnCollection columns)
{
bool result = true;
for (int i = 0; i < columns.Count; i++)
{
//下面句代码的意思是?劳烦讲解下
result &= ColumnEqual(rowA[columns[i].ColumnName], rowB[columns[i].ColumnName]);
}
return result;
}

...全文
439 36 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
龙宜坡 2009-04-15
  • 打赏
  • 举报
回复
楼上各位解释的差不多了,更详细的看这里&= 运算符(C# 参考),微软的解释
criedshy 2009-04-15
  • 打赏
  • 举报
回复
和a+=b差不多
你要搞清楚&运算符的意义
txt_paul 2009-04-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 splory 的回复:]
运算结果会是咋样的?
详细讲解下塞!
[/Quote]
bool a,b;
bool result = false;
a = true;
b = true;
result = a & b;
//此时result 的值是 true

a = false;
//此时result 的值是false
result = a & b;

这是布尔运算。 & 表示与的关系, 即a 和b 都是true的时候。结果才为 true;
ai2757 2009-04-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ojlovecd 的回复:]
就相当于
result = result & ColumnEqual(rowA[columns[i].ColumnName], rowB[columns[i].ColumnName]);

&是按位与运算,只要&两边的操作数有一个为false那么结果都为false,只有两个都是true才返回true
[/Quote]


顶。
ysj52zqq 2009-04-14
  • 打赏
  • 举报
回复
&是位运算符 a&b 只有当a,b均为1时结果才为ture
&&是逻辑运算符
zzxap 2009-04-14
  • 打赏
  • 举报
回复
&& 相当于 and
freewind0521 2009-04-14
  • 打赏
  • 举报
回复
&是位运算符 a&b 只有当a,b均为1时结果才为ture
&&是逻辑运算符
scu_cs 2009-04-12
  • 打赏
  • 举报
回复
result &= ColumnEqual(rowA[columns[i].ColumnName], rowB[columns[i].ColumnName]);
就相当于
result = result & ColumnEqual(rowA[columns[i].ColumnName], rowB[columns[i].ColumnName]);

把result变量与ColumnEqual方法的返回值按位相与,然后赋值回result变量。
xxxx_love 2009-04-12
  • 打赏
  • 举报
回复
x&=y;

相当于
x=x&y;
xufzu123 2009-04-12
  • 打赏
  • 举报
回复
学习了~~
readfuture 2009-04-12
  • 打赏
  • 举报
回复
学习
深海之蓝 2009-04-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 zgke 的回复:]
& 与 运算
true & true =true;
false & false =false;
false & true =false;
true & false =false;

进行位的与运算
1 与 0 结果为0
0 与 1 结果为0
1 与 1 结果为1
0 与 0 结果为0
如果是 int 或则别的类型 那是会转换成 bit来进行位运算
2 & 11 结果为2
也就是 0010 & 1011
0与1 0
0与0 0
1与1 1
0与1 0
0010 转为10进数就是2
[/Quote]
热学沸腾56 2009-04-11
  • 打赏
  • 举报
回复
up,mark
zzyzgydotnet 2009-04-11
  • 打赏
  • 举报
回复
up
Learn-anything 2009-04-11
  • 打赏
  • 举报
回复
LG
pc_funning 2009-04-11
  • 打赏
  • 举报
回复
result =result & ColumnEqual(rowA[columns[i].ColumnName], rowB[columns[i].ColumnName]);

陌上花花 2009-04-11
  • 打赏
  • 举报
回复
x&=y;

相当于
x=x&y;
cppfaq 2009-04-11
  • 打赏
  • 举报
回复
bool isEqual = ColumnEqual(rowA[columns[i].ColumnName], rowB[columns[i].ColumnName]);
result = result & isEqual;
IamHandsomeman 2009-04-11
  • 打赏
  • 举报
回复
MSDN 上的



备注
使用 &= 赋值运算符的表达式,如

x &= y


等效于

x = x & y


不同的是 x 只计算一次。 & 运算符对整数操作数执行按位逻辑“与”运算,对 bool 操作数执行逻辑“与”运算。

不能直接重载 &= 运算符,但用户定义的类型可重载二元 & 运算符(请参见 operator)。
microblue 2009-04-11
  • 打赏
  • 举报
回复
LZ 的原题中 result 是 bool 值,可以改用 逻辑与运算符 && :
result &&= ColumnEqual(rowA[columns[i].ColumnName], rowB[columns[i].ColumnName]);
加载更多回复(15)

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧