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"表示"半真,半假,也许"等.
Rub*_*bys 24
使用这种方式,您可以将您喜欢的任何字符串的转换定义为所需的布尔值.1是真的,0显然是假的.
好处:易于修改.您可以添加新别名或轻松删除它们.
缺点:可能需要比简单的if更长的时间.(但如果你有多个alises,它会变得毛茸茸)
Run Code Online (Sandbox Code Playgroud)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