如果变量不是布尔值,则返回False

时间:2009-09-23 13:16:52

标签: c# boolean

如果Falseusable之外的任何内容(True以外的任何内容),我的下面代码如何返回bool,目前我的代码会抛出异常{{ 1}}不是布尔。

usable

5 个答案:

答案 0 :(得分:12)

bool isUseable;
bool.TryParse(readValue("Useable"), out isUseable);

答案 1 :(得分:7)

这是最简单,最快捷的方法:

return "True".Equals(readValue("Useable"), StringComparison.OrdinalIgnoreCase);

注意: Boolean.TryParse 不是是一个不错的选择,因为它比简单的字符串比较慢得多。请参阅此测试的结果(使用Jon Skeet's BenchmarkHelper)

using System;
using BenchmarkHelper;

class Example
{
    static void Main()
    {
        var results = TestSuite.Create
                ("Boolean.TryParse vs. String comparison", "True", true)
            .Add(tryParse)
            .Add(stringComparison)
            .RunTests()
            .ScaleByBest(ScalingMode.VaryDuration);

        results.Display(ResultColumns.NameAndDuration | ResultColumns.Score,
                results.FindBest());        
    }

    static Boolean tryParse(String input)
    {
        Boolean result;
        Boolean.TryParse(input, out result);
        return result;
    }

    static Boolean stringComparison(String input)
    {
        return "True".Equals(input, StringComparison.OrdinalIgnoreCase); 
    }
}

<强>输出:

============ Boolean.TryParse vs. String comparison ============
tryParse         12.118 6.03
stringComparison 21.895 1.00

答案 2 :(得分:5)

bool isUseable;
if (bool.TryParse(readValue("Useable"), out isUseable))
    return isUseable;
return false;

答案 3 :(得分:1)

怎么样:

return (readValue("Useable") == "TRUE");

由于Drew的评论而被编辑

答案 4 :(得分:0)

var result = Equals(true, myobject);