将String转换为INT64

时间:2016-10-10 13:46:26

标签: c# sql-server

如何在以下代码中将字符串转换为INT64而不是INT32

 public static int TransferClient(string NRIFActual, string NRIFNuevo)
    {
        int nResult = 0;
        try
        { 
            nResult = ws.TransferClient(int.parse(NRIFActual), int.Parse(NRIFNuevo));
        }
        catch (System.Net.WebException ex)
        {
            throw new Exception(ex.Message);
        }
        return nResult;
    }

请注意,我需要相同的变量名,因为它在Web服务中使用,是否有办法将其转换为INT64,如int.parse()?

2 个答案:

答案 0 :(得分:1)

你可能会得到OverflowException,因为int(Int32)可以存储的值介于-2,147,483,648和2,147,483,647之间。

1)验证您传递的字符串输入是否正确。

2)如果用户不应该插入数字,请尝试在输入中添加验证(文本框)

3)如果用户将(可以)插入更大的数字,您应该使用可以存储更高值的类型 - > long(Int64)应该足够(范围是-9,223,372,036,854,775,808到9,223,372,036,854,775,807),如果不是更大 - >你会在这里找到一个包含C#类型的列表:https://msdn.microsoft.com/ro-ro/library/ya5y69ds.aspx

提示:使用TryParse方法而不是Parse(对于您将使用的任何类型)。此方法将返回一个bool,指出转换是成功还是失败以及输出参数中的实际转换。这将使异常处理变得更加容易。

汉斯评论后编辑:

为了保持解决方案简单而不是潜入其他主题,你应该做这样的事情:

string input = "92233720368547758071";
long result;
if (!long.TryParse(input , out result))
     /*error handling */
else
    /*Continue the flow of your program*/

*输入可能来自任何地方。这只是为了举例。

答案 1 :(得分:0)

当你说你接受了9个号码并希望将其改为10个号码时,我假设你的意思是这个号码长度是9位数,你希望它是10位数。

32位整数的最大大小约为21亿。您可以使用{{1}}代替,这是一个64位整数,最大值为9,223,372,036,854,775,807。