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

Jam*_*mie 3 c# boolean

False如果usable除了True(除了bool)以外的任何东西,我怎么能返回下面的代码,目前我的代码抛出异常usable不是bool.

if (!Boolean.Parse(readValue("Useable"))) return true;
return (defined.ContainsKey(key) || (key == "Useable"));
Run Code Online (Sandbox Code Playgroud)

Ken*_*art 12

bool isUseable;
bool.TryParse(readValue("Useable"), out isUseable);
Run Code Online (Sandbox Code Playgroud)

  • 在这段代码中初始化`isUseable`毫无意义.你可以删除作业 - 这是误导. (2认同)

And*_*are 7

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

return "True".Equals(readValue("Useable"), StringComparison.OrdinalIgnoreCase);
Run Code Online (Sandbox Code Playgroud)

注: Boolean.TryParse不是一个很好的选择,因为它不仅仅是一个简单的字符串比较显著慢.请查看此测试的结果(使用Jon Skeet的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); 
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

============ Boolean.TryParse vs. String comparison ============
tryParse         12.118 6.03
stringComparison 21.895 1.00
Run Code Online (Sandbox Code Playgroud)


JDu*_*ley 5

bool isUseable;
if (bool.TryParse(readValue("Useable"), out isUseable))
    return isUseable;
return false;
Run Code Online (Sandbox Code Playgroud)