C# 布尔到整数转换
有没有一种方法可以在没有条件语句(例如if语句)的情况下将bool转换为整数C# 布尔到整数转换,c#,C#,有没有一种方法可以在没有条件语句(例如if语句)的情况下将bool转换为整数 不,没有。您可以将此条件隐藏在其他方法调用(如Convert.ToInt)后面,或者在中选择不同的语法(如实际的if),但最终,在某个地方,将出现您的条件。使用Convert.ToInt32(布尔值)尽管nvoigt的答案完全正确,但我可以再举几个例子,只是为了好玩 从来没有!永远不要使用这个代码!它的提供只是为了好玩或解决与(好)朋友的争端!) 首先,方法GetHashCode发挥了神奇的作用(作为实现细节): 如果
不,没有。您可以将此条件隐藏在其他方法调用(如
Convert.ToInt
)后面,或者在中选择不同的语法(如实际的if
),但最终,在某个地方,将出现您的条件。使用Convert.ToInt32(布尔值)
尽管nvoigt的答案完全正确,但我可以再举几个例子,只是为了好玩
从来没有!永远不要使用这个代码!它的提供只是为了好玩或解决与(好)朋友的争端!)
首先,方法GetHashCode
发挥了神奇的作用(作为实现细节):
如果你想要更深奥的方法。。陛下不客气
记住!从来没有 我很确定答案是否定的。你是否尝试过通过cast进行显式转换?只是好奇,你不喜欢该语句的什么地方?条件逻辑总是导致函数的圈复杂度。我打算提出一个反例,使用字典/查找,但人们总是可以争论“实际上if
,但最终”降到几乎任何级别;或者至少远低于C。在前面的评论中,我建议简单地将指向布尔的指针转换为指向int的指针,并取消引用它以获得int值(在不安全的
方法中)。但是bool和int的大小不同,cf.。据我所知,这样的转换不起作用。请简要解释您的答案。@Ravimallya需要在其中解释什么?我喜欢。您知道Convert.ToInt32(boolValue)是否使用某种位操作或条件逻辑吗?我有点懒于使用.net reflector。请尝试ILSpy:):if(!value)返回0;返回1;
int intValue = boolValue ? 1 : 0;
int intValue = Convert.ToInt32(boolValue));
bool b = true;
int i = b.GetHashCode();
bool b = true;
int i = ~(b.ToString()[0] / 2) & 1;