我有以下情况:
enum values{
go = 1,
stand = 2,
jump = 3,
run = 4,
go_stand=5,
go_jump=6,
go_run=7,
go_stand_jump=8,
… and so on
Go_stand_jum_prun=17}
int select value(bool go, bool stand, bool jump, bool run)
{
}
基于传递给方法的 bool 值的组合,我需要返回适当的值,这意味着如果 go=true 和其余的 false 如果传入的所有参数都为真,则返回 1 将返回 17,这同样适用于所有之间的组合。我唯一的想法是用很多 if 和 else if 语句来评估可能的组合,这有点丑陋。问题是有没有更优雅的解决方案。
谢谢大家!!!
最佳答案
要实现这一点,您必须修改您的enum
enum values {
none = 0,
go = ( 1 << 0 ), // 1
stand = ( 1 << 1 ), // 2
jump = ( 1 << 2 ), // 4,
run = ( 1 << 3 ), // 8
go_jump = go | jump
}
然后在你的方法中:
values GetValues(bool go, bool stand, bool jump, bool run)
{
values result = values.none;
if( go )
result |= values.go;
if( stand )
result |= values.stand;
// and so on...
return result;
}
关于c# - 基于多个 bool 条件的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41569546/