Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将布尔值转换为整数?_C#_Type Conversion_Int_Boolean - Fatal编程技术网

C# 如何将布尔值转换为整数?

C# 如何将布尔值转换为整数?,c#,type-conversion,int,boolean,C#,Type Conversion,Int,Boolean,我的代码如下所示: if (Settings.adp == true) App.DB.UpdateIntSetting(SET.Adp, 0); else App.DB.UpdateIntSetting(SET.Adp, 1); 有没有办法通过某种方式将bool Settings.adp转换为int(0或1)来将其简化为一行?您可以使用三元运算符将其合并为一行: App.DB.UpdateIntSetting(SET.Adp, Settings.adp ? 0 : 1); 从 状

我的代码如下所示:

if (Settings.adp == true)
   App.DB.UpdateIntSetting(SET.Adp, 0);
else
   App.DB.UpdateIntSetting(SET.Adp, 1);

有没有办法通过某种方式将bool Settings.adp转换为int(0或1)来将其简化为一行?您可以使用三元运算符将其合并为一行:

App.DB.UpdateIntSetting(SET.Adp, Settings.adp ? 0 : 1);

状况?结果:替代方案


可以使用三元运算符将其合并为一行:

App.DB.UpdateIntSetting(SET.Adp, Settings.adp ? 0 : 1);

状况?结果:替代方案


按照相反的逻辑,Nathan's可能是清晰的最佳选择,但您也可以使用:


如果您的逻辑相反,Nathan's可能是清晰的最佳选择,但您也可以使用:


如果您需要在项目的许多地方执行到int的转换,那么您的情况看起来很适合使用


原因:如果您不使用ValueObject,您将在整个应用程序中复制该逻辑以转换为int。由于您的反向逻辑(true->0,false->1),ValueObject更适合您的情况。使用ValueObject将有助于避免重复此逻辑。

如果您需要在项目中的许多地方执行转换为int,那么您的情况看起来是一个很好的选择


原因:如果您不使用ValueObject,您将在整个应用程序中复制该逻辑以转换为int。由于您的反向逻辑(true->0,false->1),ValueObject更适合您的情况。使用ValueObject将帮助您避免重复此逻辑。

App.DB.UpdateIntSetting(SET.Adp,Settings.Adp?0:1)
请查看此内容。
Adp==true
->
0
,这是不寻常的。我会在这一行旁边加上一条注释。关于编码风格的一条注释:没有什么比比较真与真来判断真与假更能说明“初学者程序员”。布尔值已为真或假;你不需要将它与真实相比较就知道真实是真实的。只要说
if(Settings.adp).
而不是
if(Settings.adp==true)
App.DB.UpdateIntSetting(SET.adp,Settings.adp?0:1)
看看这个BTW。
adp==true
->
0
,这是不寻常的。我会在这一行旁边加上一条注释。关于编码风格的一条注释:没有什么比比较真与真来判断真与假更能说明“初学者程序员”。布尔值已为真或假;你不需要将它与真实相比较就知道真实是真实的。只要说
if(Settings.adp).
而不是
if(Settings.adp==true)
。我想知道为什么人们会因为否定的布尔值而觉得这个答案不好,但这是OP的逻辑,不是我的。没有更多的信息,我们无法对OP的设计决策做出评论。我假设这不是因为人们没有意识到,
Convert
可以做到这一点,考虑到我已经链接了相关文档。当你编写代码时,你需要想到像我这样的人——出于某种原因,他们这些天做了太多的维护工作。这段代码对读者来说毫无意义。如果你做了这样的事情,用大量的评论围绕着它。更好的是,使用@Nathanwery所示的方法——但也要用注释来围绕它(因为“真意味着零”的逻辑)。@Flydog57我猜。坦白地说,我在开始写答案后注意到了否定。我仍然觉得有必要证明
Convert.ToIn32
可以实现布尔值到整数的转换。我已经编辑了我的答案,以便读者现在可以更清楚地看到流程:)但是,
Convert.ToIn32(bool)
真的比只使用三元运算符的赋值更好吗?在我使用的代码中,三元运算符的使用通常很差(使单个语句太长而无法理解),但是,在赋值中从bool转换为int才是最理想的用法。无论如何,谢谢你澄清了事情(不,我没有投你反对票)@Flydog,我不是说这样更好。就我个人而言,我会在OP的用例中使用三元运算符,但已经有了答案。如果它只是一个直接的true=1/false=0转换,那么我可能会使用
Convert
进行转换。我为未来的读者补充了更多的答案。谢谢你的洞察力:)我想。我想知道为什么人们会因为否定的布尔值而觉得这个答案不好,但这是OP的逻辑,不是我的。没有更多的信息,我们无法对OP的设计决策做出评论。我假设这不是因为人们没有意识到,
Convert
可以做到这一点,考虑到我已经链接了相关文档。当你编写代码时,你需要想到像我这样的人——出于某种原因,他们这些天做了太多的维护工作。这段代码对读者来说毫无意义。如果你做了这样的事情,用大量的评论围绕着它。更好的是,使用@Nathanwery所示的方法——但也要用注释来围绕它(因为“真意味着零”的逻辑)。@Flydog57我猜。坦白地说,我在开始写答案后注意到了否定。我仍然觉得有必要证明
Convert.ToIn32
可以实现布尔值到整数的转换。我已经编辑了我的答案,以便读者现在可以更清楚地看到流程:)但是,
Convert.ToIn32(bool)
真的比只使用三元运算符的赋值更好吗?在我使用的代码中,三元运算符的使用通常很差(使单个语句太长而无法理解),但是,在赋值中从bool转换为int才是最理想的用法。无论如何,谢谢你澄清了事情(不,我没有投你反对票)@Flydog,我不是说这样更好。就我个人而言,我会在OP的用例中使用三元运算符,但已经有了答案。如果它只是一个直接的true=1/false=0转换,那么我可能会使用
Convert
进行转换。我为未来的读者补充了更多的答案