0

メソッド宣言で値を渡すか、パラメーターをTrue介しFalseて値を渡す次のコード スニペットがあります。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と、 thenTrueが出力されます。ただし、 を渡す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

常に真の値を受け取る理由を説明しましょう。

関数System.Boolean.TryParseは、文字列からブール値への変換に成功した場合、true を返します。

したがって、あなたの例では常に真になります。

Carsten Schütte はすでにソリューション コードを提供しています。

于 2012-07-23T11:06:49.477 に答える
0

msdnを見てください 。変換の結果は Output 変数 (your bValue)に格納されます。

このメソッドが戻るときに、変換が成功した場合は、値が Boolean.TrueString と等しい場合は true、値が FalseString と等しい場合は false が含まれます。変換に失敗した場合は、false が含まれます。値が null であるか、TrueString または FalseString フィールドの値と等しくない場合、変換は失敗します。

于 2012-07-23T10:59:26.747 に答える