gpt4 book ai didi

C# 将二进制或项目一起列成一个位掩码结果

转载 作者:行者123 更新时间:2023-11-30 14:53:23 27 4
gpt4 key购买 nike

我在列表中有一个 C# 中的位标志列表。我想将二进制或它们一起生成一个位掩码。

例如,将 modifierKey 枚举视为具有 Flags 属性的位字段,如下所示:

[Flags]
public enum ModifierKeys : uint
{
Alt = 1,
Control = 2,
Shift = 4,
Win = 8
}

我知道我可以使用 for 循环和按位或将值一起作为 uint 来执行此操作,然后转换回枚举类型。我目前的工作方法是这样的:

public ModifierKeys ComputeMask(List<ModifierKeys> keys)
{
uint value = 0;
foreach(var item in keys)
{
value |= (uint)item;
}

return (ModifierKeys)value;
}

关于我的问题 - 我可以使用单个 LINQ 查询或我缺少的其他扩展来完成此操作吗?

最佳答案

试试这个:

uint value = keys.Aggregate<ModifierKeys, uint>(0, (current, item) => current | (uint)item);

关于C# 将二进制或项目一起列成一个位掩码结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29526294/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com