+ -
当前位置:首页 → 问答吧 → 来看这条语句,是什么意思,关于逻辑或(|)

来看这条语句,是什么意思,关于逻辑或(|)

时间:2011-12-06

来源:互联网

C# code

 if (e.Row.RowState == (DataControlRowState.Edit | DataControlRowState.Alternate) || e.Row.RowState == DataControlRowState.Edit)




在GridView的RowDataBound方法中。e.Row.RowState == (DataControlRowState.Edit | DataControlRowState.Alternate) 的执行顺序是什么?
为什么和e.Row.RowState == DataControlRowState.Alternate) || e.Row.RowState == DataControlRowState.Edit
的效果不一样的

作者: xuhui3124563   发布时间: 2011-12-06

|位或运算的时候,他会将所有运算条件都算出结果,再判断是否为真.
|| 逻辑或运算的时候,从前往后运算,若有一个成立,则不再继续运算下面的条件.直接为真.

作者: Return_false   发布时间: 2011-12-06

引用 1 楼 return_false 的回复:

|位或运算的时候,他会将所有运算条件都算出结果,再判断是否为真.
|| 逻辑或运算的时候,从前往后运算,若有一个成立,则不再继续运算下面的条件.直接为真.

e.Row.RowState == (DataControlRowState.Edit | DataControlRowState.Alternate) 的意思就是
e.Row.RowState ==DataControlRowState.Edit和e.Row.RowState == DataControlRowState.Alternate同时成立?

作者: xuhui3124563   发布时间: 2011-12-06

|是按位或,参与运算的是整数(枚举值),运算结果仍然是个整数;
||是逻辑或,参与运算的是逻辑值(true或false),运算结果仍然是逻辑值。

有些枚举值存在多选关系,其内部对应的整数可能为1、2、4、8、16、……这种形式,这些数的二进制表示只有一位上是1,其他都为0。按位或后就可以知道同时满足哪些选项。

作者: dalmeeme   发布时间: 2011-12-06

DataControlRowState.Edit|DataControlRowState.Alternate的意思是该行的行状态是编辑、交替。
就是同时具备几个特征的意思。

作者: dalmeeme   发布时间: 2011-12-06

引用 2 楼 xuhui3124563 的回复:

引用 1 楼 return_false 的回复:

|位或运算的时候,他会将所有运算条件都算出结果,再判断是否为真.
|| 逻辑或运算的时候,从前往后运算,若有一个成立,则不再继续运算下面的条件.直接为真.

e.Row.RowState == (DataControlRowState.Edit | DataControlRowState.Alternate) 的意思就是
e.Row……

其他的不说了
就说枚举,一般来说,枚举值只能是其定义的值中的任意一个
但是有些特殊情况,一个枚举类型变量的值可能是其定义的值中多个的组合
楼主查一查FlagsAttribute这个特性就明白了

作者: sdfkfkd   发布时间: 2011-12-06