C# 枚举上的位操作
我在以下方面遇到一些问题:C# 枚举上的位操作,c#,enums,bit,bitwise-operators,C#,Enums,Bit,Bitwise Operators,我在以下方面遇到一些问题: 我想获取列集合中第一个可见且冻结的列 我认为这样可以做到: DataGridViewColumnCollection dgv = myDataGridView.Columns; dgv.GetFirstColumn( DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen); 是否也可以制作位掩码以获取第一个冻结或可见列 该实现可以说是“所有这些”-它使用: ((thi
- 我想获取列集合中第一个可见且冻结的列
DataGridViewColumnCollection dgv = myDataGridView.Columns;
dgv.GetFirstColumn(
DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen);
- 是否也可以制作位掩码以获取第一个冻结或可见列
((this.State & elementState) == elementState);
这就是“全部”。如果您想编写一个“any of”,可以添加一个helper方法:
(在DataGridViewColumnCollection
之前添加“this”,使其成为中的C#3.0扩展方法)
或使用LINQ:
return columns.Cast<DataGridViewColumn>()
.FirstOrDefault(col => (col.State & states) != 0);
返回columns.Cast()
.FirstOrDefault(列=>(列状态和状态)!=0);
嗯,位掩码通常是这样工作的:
|
正在连接标志<代码>&从位掩码表示的标志集中过滤标志子集<代码>^通过掩码翻转标志(至少在C/C++中)
要获取第一个冻结或可见列,GetFirstColumn
必须以不同的方式处理位掩码(例如,GetFirstColumn
可以获取与任何标志集匹配的第一列,但情况并非如此)
return columns.Cast<DataGridViewColumn>()
.FirstOrDefault(col => (col.State & states) != 0);