这有意义吗? MyValue可以是“true”或“false”
它不应该是Stringcomparison.OrdinalIgnoreCase吗?
MyValue.Equals("true", StringComparison.CurrentCultureIgnoreCase))
答案 0 :(得分:4)
我不会这样做。仅仅因为字符串不等于"true"
并不意味着它等于"false"
。这是一个简单的方法让丑陋的漏洞进入。我认为你应该解析字符串
bool value;
if(!Boolean.TryParse(MyValue, out value)) {
// it did not parse
}
// it parsed
这更可能是正确的,而且更具可读性。此外,文化问题刚刚被扫地出门。
答案 1 :(得分:2)
Bool.Parse
答案 2 :(得分:1)
这实际上取决于您的情况以及您的程序的其他部分是如何制作的。来自OrdinalCompareCase
上的文档OrdinalIgnoreCase属性返回的StringComparer将字符串中的字符进行比较,就像使用不变文化的约定将它们转换为大写一样,然后执行独立于语言的简单字节比较。在比较以编程方式生成的字符串或比较不区分大小写的资源(如路径和文件名)时,这是最合适的。
所以基本上,如果这些值与文化无关(用progamatically生成等),请使用OrdinalIgnoreCase