gpt4 book ai didi

c# - 优雅地确定是否有多个 bool 值是 "true"

转载 作者:IT王子 更新时间:2023-10-29 03:40:52 27 4
gpt4 key购买 nike

我有一组五个 bool 值。如果其中不止一个是真的,我想执行一个特定的功能。您能想到的最优雅的方法是什么,可以让我在单个 if() 语句中检查此条件?目标语言是 C#,但我也对其他语言的解决方案感兴趣(只要我们不是在谈论特定的内置函数)。

一个有趣的选择是将 bool 值存储在一个字节中,进行右移并与原始字节进行比较。像 if(myByte && (myByte >> 1)) 但这需要将单独的 bool 值转换为一个字节(通过 bitArray?),这似乎有点(双关语)笨拙...... [edit]抱歉,那应该是 if(myByte & (myByte - 1)) [/edit]

注意:这当然非常接近经典的“人口计数”、“横向加法”或“汉明权重”编程问题——但又不完全相同。我不需要知道设置了多少位,只要它不止一个。我希望有一种更简单的方法来实现这一点。

最佳答案

我打算编写 Linq 版本,但五个左右的人抢在我前面。但我真的很喜欢 params 方法,以避免必须手动新建一个数组。所以我认为最好的混合体是,基于 rp 对正文的回答,用明显的 Linqness 替换:

public static int Truth(params bool[] booleans)
{
return booleans.Count(b => b);
}

阅读和使用非常清晰:

if (Truth(m, n, o, p, q) > 2)

关于c# - 优雅地确定是否有多个 bool 值是 "true",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/377990/

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