0

我有以下代码片段,其中我通过方法声明中的参数TrueFalse通过参数传递值。PropertyValue

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几乎变得神奇。为什么会这样?

4

3 回答 3

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

于 2012-07-23T10:56:57.610 回答
0

查看msdn 转换的结果存储在 Output 变量中(您的bValue

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

于 2012-07-23T10:59:26.747 回答
0

让我解释一下为什么你总是收到一个真实的价值:

System.Boolean.TryParse如果函数可以成功地进行从字符串到布尔值的转换,则该函数返回 true。

因此,在您的示例中,它始终是正确的。

Carsten Schütte 已经给出了解决方案代码。

于 2012-07-23T11:06:49.477 回答