C# 将int.Parse()强制转换为long与使用long.Parse有区别吗?

C# 将int.Parse()强制转换为long与使用long.Parse有区别吗?,c#,type-conversion,C#,Type Conversion,我刚刚偶然发现了一些开发人员使用的代码 fooBar((long)int.Parse(someVariable)); fooBar函数正在等待一个long作为参数,并将其用于SQL查询 这与使用long.Parse(…)有什么区别吗?是的,long.Parse将处理大于int的数字。所以最好是这样,除非您希望在数字不能放入int时出现异常 此外,由于存在隐式强制转换,因此从int到long的强制转换是不必要的 是,long.Parse将处理大于int的数字。所以最好是这样,除非您希望在数字不能

我刚刚偶然发现了一些开发人员使用的代码

fooBar((long)int.Parse(someVariable));
fooBar
函数正在等待一个
long
作为参数,并将其用于SQL查询


这与使用
long.Parse(…)
有什么区别吗?

是的,
long.Parse
将处理大于
int
的数字。所以最好是这样,除非您希望在数字不能放入
int
时出现异常


此外,由于存在隐式强制转换,因此从
int
long
的强制转换是不必要的

是,
long.Parse
将处理大于
int
的数字。所以最好是这样,除非您希望在数字不能放入
int
时出现异常


此外,由于存在隐式强制转换,因此从
int
long
的强制转换是不必要的

区别在于如果
someVariable
表示一个不能放入
int
的值,区别在于
someVariable
表示一个不能放入
int

的值,主要区别在于
int.Parse
的值,您几乎可以保证一个在
int
范围内的数字。如果数字超出该范围,则
int.Parse
将抛出一个
OverflowException
(而
long.Parse
将乐意接受它,只要数字在
long
的范围之内)。

主要区别在于
int.Parse
,您几乎可以保证一个在
int
范围内的数字。如果该数字超出该范围,则
int.Parse
将抛出
OverflowException
(而
long.Parse
将乐意接受它,只要该数字在
long
的范围内)当你使用long时。解析函数的结果是int64,但当你使用int时。解析结果是int32。

当你使用long时。解析函数的结果是int64,但当你使用int时。解析结果是int32。

我想不同的是int.Parse可能会失去精度,所以我认为long.Parse会更好执行明智?@antisanity是的,这也是我的想法。我想区别在于int.Parse可能会失去精度,所以我认为long.Parse会更好结果明智还是执行明智?@antisanity是的,这也是我的想法。隐式强制转换存在,只要函数需要
long
。如果它期望,比如说,一个
对象
,那么事情就会变得奇怪。@cHao是的,但问题是它期望的是一个long。只要函数期望
long
,隐式强制转换就存在。如果它期望,比如说,一个
对象
,那么事情就会变得奇怪。@cHao是的,但问题是它期望很长时间。