在IT技术中,Convert.ToInt16(somenumber)
和ToInt16(somenumber)
以及(ToInt16)somenumber
有何不同?什么情况下我们需要使用其中之一?
somenumber
的类型是什么?Convert.ToXXX
适用于需要转换数据库之类的数据,您可能不知道要从哪种类型进行转换,只知道数据是某种数字类型。
如果要将数字变量以不同的大小进行典型转换,则使用强制转换更佳。但您的强制转换语法有点错误,应该是 (Int16)somenumber
(没有 "To")。
最后,ToInt16(somenumber)
在当前类(及其基类)中寻找函数或委托字段 ToInt16
,因此它不太可能编译成功。
Convert.Int16()
是System.Convert
中的一个方法。它有多种重载形式,可以将不同类型转换为Int16
。
.ToInt16()
可能是某个类定义的方法,但很可能你只是在引用完全相同的方法。请了解命名空间。
但如果你有一个名为Unicorn
的类,并且它有一个ToInt16()
方法,那么你显然必须使用该方法,因为System.Convert
中没有支持Unicorn
的重载。
Convert
是一个类,而不是命名空间,因此您无法使用using
将其成员引入作用域(尽管这个功能已经被请求了很多次,例如 System.Math
)。 - Ben VoigtConvert.ToInt16(somenumber)
和 Int16.Parse(somenumber).
在这种情况下,方法签名是 Convert.ToInt16(Object somenumber)
和 Int16.Parse(string somenumber)
。object
转换为指定类型,而 Parse 则将一个 string
解析成指定类型。Convert.ToInt16(somenumber)
就像其他人所说的,这是一种将某些类型(例如字符串)转换为 Int16
的方法。
ToInt1(somenumber)
我不知道这是什么。
(ToInt16)somenumber
- 没有这样的东西,但有 (Int16)somenumber
,它会将具有显式运算符重载且返回 Int16
的对象转换(请看这里)。
在将浮点数转换为整数时,有一个重要的区别:
Convert.ToInt16
四舍五入到最近的整数(例如 1.6 -> 2)(Int16)x
强制转换会截断小数部分(例如 1.6 -> 1)
ToInt16(somenumber)
是一个将某个数值转换为16位有符号整数的函数。 - Andrey