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