Convert.toInt32(boolean)是c#执行此操作的唯一方法吗?

Nza*_*all 4 c# refactoring boolean dynamics-crm-2011

我在c#中有一些代码,如果某个布尔值为true,则需要将数字递增1,否则它需要说明相同.我在VS 2012中使用立即窗口找到的唯一方法是+ Convert.ToInt32(boolean).

我在某处遗漏了一些明显的东西吗?我认为因为布尔值基本上是真(1)或假(0)(让我们忘记FileNotFound),所以更容易将布尔值强制转换为Int值.

编辑:false为0,而不是1

edit2:我原来的编辑被吞没了.我目前正在对数字进行null检查(该数字是来自Dynamics CRM 2011实体的可空int字段).是否可以保留该nullcheck?

Ser*_*kiy 6

我不认为在某些值上添加布尔标志是非常易读的解决方案.基本上你想增加(即加1)值,如果标志是true.所以,如果检查会清楚地描述你的意图添加做的工作很简单:

if (flag) value++;
Run Code Online (Sandbox Code Playgroud)

更新:根据您的编辑,您想要做两件事:

  1. 将默认值设置为可空值
  2. 如果某些条件为真,则递增值.

为了使你的代码清晰,我不会试图把两件事都放在一行.明确表达你的意图:

value = value ?? 0; // 1

if (flag) // 2
    value++;
Run Code Online (Sandbox Code Playgroud)