将 int 转换为布尔值的更好方法
Posted
技术标签:
【中文标题】将 int 转换为布尔值的更好方法【英文标题】:Better way to convert an int to a boolean 【发布时间】:2013-02-13 01:29:32 【问题描述】:输入的int
值仅包含 1 或 0。
我可以通过写if else
语句来解决问题。
有没有办法将int
转换为boolean
?
【问题讨论】:
【参考方案1】:int i = 0;
bool b = Convert.ToBoolean(i);
【讨论】:
这是我在这里看到的最好的解决方案。 这应该被接受,因为它确实回答了这个问题:转换。 这个更有意义,因为它描述了正在做的事情。 @Corak 的回答很容易让人混淆。 如果你有一个空值,这甚至可以工作。对我来说,具有空值的 DataReader 会导致崩溃,现在就像一个魅力:Convert.ToBoolean(rd["NullableBoolField"])【参考方案2】:我假设0
表示false
(很多编程语言都是这种情况)。这意味着true
是not 0
(一些语言使用-1
,另一些使用1
;兼容两者都没有坏处)。所以假设“更好”意味着更少的打字,你可以写:
bool boolValue = intValue != 0;
【讨论】:
【参考方案3】:开个玩笑,如果您只希望输入的整数是 0 或 1,那么您真的应该检查一下情况是否如此。
int yourInteger = whatever;
bool yourBool;
switch (yourInteger)
case 0: yourBool = false; break;
case 1: yourBool = true; break;
default:
throw new InvalidOperationException("Integer value is not valid");
开箱即用的Convert
不会检查这个; yourInteger (==|!=) (0|1)
也不会。
【讨论】:
不是投反对票,但switch
的情况在这里是多余的。
真的吗?正如我所看到的,选项是嵌套的三元组或 if/else if/else 块,这些都不是更简单或更容易阅读。 @Marc.2377 - 不要尴尬,真的很好奇您希望如何完成。
0 为假,否则所有整数为真
@RamilAliyev 不是根据问题。
@Rawling - 该问题还要求提供比使用 if/else 更好的方法。您专注于输入验证。 Evelie 专注于可读性,而我专注于减少打字。 OP没有具体说明他们认为什么“更好”。其他用户现在可以决定哪个答案对他们来说“更好”。【参考方案4】:
我认为这是最简单的方法:
int i=0;
bool b=i==1;
【讨论】:
这假设除了 1 之外的任何其他内容都是错误的,就像 Corak 在他们的帖子中所说的那样,这是其他编程语言使用它的相反方式(例如 javascript)。以上是关于将 int 转换为布尔值的更好方法的主要内容,如果未能解决你的问题,请参考以下文章
Java:将原始布尔值转换为原始 int (0,1) 的好方法