【问题标题】:Why does Integer.TryParse set result to zero on failure?为什么 Integer.TryParse 在失败时将结果设置为零?
【发布时间】:2009-07-03 17:20:28
【问题描述】:

我对 Integer.TryParse() 函数的理解是,它试图从传入的字符串中解析一个整数,如果解析失败,结果整数将保持与以前一样。

我有一个默认值为 -1 的整数,如果解析失败,我希望将其保留为 -1。但是,解析失败时的 Integer.TryParse() 函数正在将此默认值更改为零。

Dim defaultValue As Integer = -1
Dim parseSuccess As Boolean = Integer.TryParse("", defaultValue)
Debug.Print("defaultValue {0}", defaultValue)
Debug.Print("parseSuccess {0}", parseSuccess)

我的期望是上面的代码sn-p应该输出:

defaultValue -1
parseSuccess False

然而它却输出:

defaultValue 0
parseSuccess False

我的理解正确吗?

【问题讨论】:

    标签: vb.net integer


    【解决方案1】:

    这是一个out 参数,这意味着它必须由方法设置(除非它抛出异常)——方法看不到原始值是什么。

    替代方法是将其设为ref 参数并仅在成功时设置它,但这意味着强制调用者首先初始化变量,即使他们想要这种行为.

    您可以编写自己的实用程序方法:

    public bool TryParseInt32(string text, ref int value)
    {
        int tmp;
        if (int.TryParse(text, out tmp))
        {
            value = tmp;
            return true;
        }
        else
        {
            return false; // Leave "value" as it was
        }
    }
    

    【讨论】:

      【解决方案2】:

      你是对的,如果 TryParse 失败,则使用 0。 (MSDN 说得很清楚) 但是如果这是你想要的,你可以检查 paseSuccess 并返回你的默认值。

      【讨论】:

        猜你喜欢
        • 2014-10-26
        • 1970-01-01
        • 2021-02-21
        • 1970-01-01
        • 2012-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-10
        相关资源
        最近更新 更多