使用true和false作为条件运算中的表达式

Chr*_*yer 14 c# coding-style readability conditional-operator

我正在维护一些代码,并且发现了以下模式:

var isMale = (row["Gender"].ToString() == "M") ? true : false;
Run Code Online (Sandbox Code Playgroud)

而不是这个:

var isMale = (row["Gender"].ToString() == "M");
Run Code Online (Sandbox Code Playgroud)

是否有任何理由为什么会有人这样做?有人认为前者更具可读性或更清晰吗?是否有某种旧的C"陷阱",这是一个保留吗?

bob*_*nce 19

一个正当的理由?没有.

它通常由那些不太了解条件本身也是表达式的人产生,产生一个布尔结果.特别是,人们在一种不是这种情况的语言上学习,例如BASIC的许多变体.


Sha*_*owe 16

我想如果你通过有效的角色得到报酬.除此之外,我想不出任何理由.

  • 你设法找到了这样做的一个很好的理由!话虽这么说,如果我每个角色都有报酬,我会放弃;) (4认同)
  • 如果我按性格获得报酬,我将决定在我很快退休后购买哪个岛屿. (4认同)

Jer*_*fin 10

如果你不能相信:(row["Gender"].ToString() == "M")正确地产生真假,那么你可能无法真正信任:(row["Gender"].ToString() == "M") ? true : false;或者.当然,你无疑需要至少重复几次:

(row["Gender"].ToString() == "M") ? true : false ? true : false ? true : false;
Run Code Online (Sandbox Code Playgroud)

再说,也许你不能相信的组合==?:由其自身-成为真正的肯定,你可能至少需要多一点冗余:

if ((row["Gender"].ToString() == "M") ? true : false ? true : false ? true : false == true)
    isMale = true == true;
else
    isMale = false != false;
Run Code Online (Sandbox Code Playgroud)

嗯......也许我昨晚熬夜了...... :-)