5

这有意义吗?MyValue 可以是“真”或“假”

它不应该是 Stringcomparison.OrdinalIgnoreCase 吗?

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

3 回答 3

4

我不会那样做。仅仅因为一个字符串不等于"true"并不意味着它等于"false"。这是让丑陋的错误溜进来的一种简单方法。我认为您应该解析字符串

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

这更有可能是正确的,并且更具可读性。此外,文化问题刚刚被掩盖。

于 2012-03-30T13:00:02.683 回答
2
Bool.Parse

对我来说看起来更好。

于 2012-03-30T12:59:55.773 回答
2

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

OrdinalIgnoreCase 属性返回的 StringComparer 将要比较的字符串中的字符视为使用不变区域性的约定转换为大写,然后执行与语言无关的简单字节比较。这在比较以编程方式生成的字符串或比较不区分大小写的资源(如路径和文件名)时最合适。

所以基本上,如果这些价值观是独立于文化的(以编程方式生成的,等等)使用OrdinalIgnoreCase

于 2012-03-30T13:00:20.150 回答