没有If,.NET可以将"是"和"否"转换为布尔值吗?

haw*_*bsl 14 .net casting boolean

你会认为有一种方法可以使用DirectCast,TryCast,CType等,但所有这些似乎都扼杀了它,例如:

CType("Yes", Boolean)
Run Code Online (Sandbox Code Playgroud)

你得到:

System.InvalidCastException - 从字符串"Yes"到"Boolean"类型的转换无效.

slu*_*ter 72

如果你考虑一下,"是"不能转换为bool,因为它是一个语言和特定于上下文的字符串.

"是"不是真的同义词(尤其是当你的妻子说出来的时候......).对于类似的东西,你需要自己转换它; "是"表示"真实","mmmm yeeessss"表示"半真,半假,也许"等.

  • 你的意思是我们缺少一个重要的数据类型WifeBoolean :) (29认同)
  • 不,这是一个枚举. (5认同)
  • 我只是让我的妻子看到这个答案 - 她笑了,说是"是的". (4认同)
  • 关于妻子的变体..您还需要一个时间因素和一个“我对她说的最后一句话”变量..... (3认同)
  • @Trevor_G,我认为你真正需要的是`bool yes = (conversation.Wife.LastMessage == "Yes" &&对话.ArgumentPotential == 0);` (2认同)
  • 但要小心,该代码可能会抛出 ArgumentException。 (2认同)

Rub*_*bys 24

使用这种方式,您可以将您喜欢的任何字符串的转换定义为所需的布尔值.1是真的,0显然是假的.
好处:易于修改.您可以添加新别名或轻松删除它们.
缺点:可能需要比简单的if更长的时间.(但如果你有多个alises,它会变得毛茸茸)

enum BooleanAliases {
      Yes = 1,
      Aye = 1,
      Cool = 1,
      Naw = 0,
      No = 0
 }
 static bool FromString(string str) {
      return Convert.ToBoolean(Enum.Parse(typeof(BooleanAliases), str));
 }
 // FromString("Yes") = true
 // FromString("No") = false
 // FromString("Cool") = true
Run Code Online (Sandbox Code Playgroud)


the*_*ost 8

不,但你可以这样做:

bool yes = "Yes".equals(yourString);

  • 天才,简直就是天才! (3认同)