Stringcomparison OrdinalIgnoreCase表示真假值

时间:2012-03-30 12:55:07

标签: c# string-comparison ordinal

这有意义吗? MyValue可以是“true”或“false”

它不应该是Stringcomparison.OrdinalIgnoreCase吗?

MyValue.Equals("true", StringComparison.CurrentCultureIgnoreCase))

3 个答案:

答案 0 :(得分:4)

我不会这样做。仅仅因为字符串不等于"true"并不意味着它等于"false"。这是一个简单的方法让丑陋的漏洞进入。我认为你应该解析字符串

bool value;
if(!Boolean.TryParse(MyValue, out value)) {
    // it did not parse
}
// it parsed

这更可能是正确的,而且更具可读性。此外,文化问题刚刚被扫地出门。

答案 1 :(得分:2)

Bool.Parse

looks better to me.

答案 2 :(得分:1)

这实际上取决于您的情况以及您的程序的其他部分是如何制作的。来自OrdinalCompareCase

上的文档
  

OrdinalIgnoreCase属性返回的StringComparer将字符串中的字符进行比较,就像使用不变文化的约定将它们转换为大写一样,然后执行独立于语言的简单字节比较。在比较以编程方式生成的字符串或比较不区分大小写的资源(如路径和文件名)时,这是最合适的。

所以基本上,如果这些值与文化无关(用progamatically生成等),请使用OrdinalIgnoreCase