将 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(很多编程语言都是这种情况)。这意味着truenot 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) 的好方法

如何将布尔值列表转换为单个 int,其中每个布尔值都被解释为位?

将 32 个布尔值的集合转换为 32 位整数 [重复]

整型以及布尔值的转换 字符串详解

检查整数是不是为 0 并返回布尔值的简短方法