Bool值始终仅输出为True

时间:2012-07-23 10:54:19

标签: c# .net

我有以下代码段,我通过方法声明中的True参数传递值FalsePropertyValue

public void SetTaskInstance(String PropertyName, String PropertyValue, int row)
{
    bool bValue;
    try
    {
        PropertyName = PropertyName.ToUpper();
        switch (PropertyName)
        {
            case "BYPASSRULESENGINE":
                m_tInstance.byPassRulesEngine =            
                   System.Boolean.TryParse(PropertyValue.ToString(), out bValue);
                break;
        }
        Console.WriteLine("Invoking method");
    }
}

如果我通过True,则会输出True。但是,如果我传递False,参数False将通过代码传递,但一旦达到break语句,当我将鼠标悬停在m_tInstance.ByPassRulesEngine上时,我看到bool值已成为True几乎是神奇的。为什么会这样?

3 个答案:

答案 0 :(得分:10)

TryParse的返回值表示解析是否成功。当然,值“false”或“False”是有效的,因此TryParse将返回true。解析后的值本身会写入out bValue参数。

更改行

m_tInstance.byPassRulesEngine = System.Boolean.TryParse(PropertyValue.ToString(), out bValue);

bool parseSuccessful = System.Boolean.TryParse(PropertyValue.ToString(), out bValue);
if (parseSuccessful)
{
    m_tInstance.byPassRulesEngine = bValue;
}

所有TryParse方法都以这种方式运行。所以在这里阅读MSDN上的TryParse文档: http://msdn.microsoft.com/en-us/library/system.boolean.tryparse.aspx

答案 1 :(得分:0)

看看msdn 转换结果存储在输出变量(您的bValue

  

当此方法返回时,如果转换成功,则包含true   如果value等于Boolean.TrueString,如果value是,则返回false   相当于FalseString。如果转换失败,则包含false。   如果value为null或不等于,则转换失败   TrueString或FalseString字段的值。

答案 2 :(得分:0)

让我解释为什么你总能得到真正的价值:

函数System.Boolean.TryParse如果能成功完成转换,则返回true,从String到Boolean。

所以在你的例子中,它总是如此。

CarstenSchütte已经提供了解决方案代码。