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
进行转换。我为未来的读者补充了更多的答案