vb.net – 为什么Integer.TryParse在失败时将结果设置为零?

我对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)

我的期望是上面的代码片段应该输出:

defaultValue -1
parseSuccess False

但是它输出:

defaultValue 0
parseSuccess False

我的理解是否正确?

它是一个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
    }
}

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...