c#why Convert.ToInt16(num)vs ToInt16(num)?

时间:2010-10-14 17:50:06

标签: c# .net

Convert.ToInt16(somenumber)ToInt16(somenumber)以及(ToInt16)somenumber

之间的区别是什么?

什么时候我们必须使用一个而不是另一个?

5 个答案:

答案 0 :(得分:4)

somenumber的类型是什么? Convert.ToXXX设计用于数据库,您可能不知道要转换的确切类型,只是数据是某种数字。

对于更典型的数字变量转换为不同的大小,转换更好。但是你的演员语法有点偏,它应该是(Int16)somenumber(没有“To”)。

最后ToInt16(somenumber)在当前类(及其基类)中查找函数或委托字段ToInt16,因此不太可能正确编译。

答案 1 :(得分:4)

Convert.Int16()System.Convert中的一种方法(可能)。它有许多从类型转换为Int16

的重载

.ToInt16()可以是为特定类定义的方法,但很可能您只是指的是完全相同的方法。阅读namespaces

但是如果你有一个名为Unicorn的类并且它有一个ToInt16()方法,你显然必须使用它,因为System.Convert中没有支持Unicorn的重载}。

答案 2 :(得分:3)

我愿意打赌,这完全是一回事。也许您的意思是Convert.ToInt16(somenumber)Int16.Parse(somenumber).在这种情况下,方法签名为Convert.ToInt16(Object somenumber)Int16.Parse(string somenumber)

转换内容将object转换为指定类型,而解析内容将string解析为指定类型。

答案 3 :(得分:2)

Convert.ToInt16(somenumber)与其他人一样,是一种可用于将某些类型(例如字符串)转换为Int16的方法。

ToInt1(somenumber)我不知道这是什么。

(ToInt16)somenumber - 没有这样的事情,但是(Int16)somenumber会强制转换一个具有显式运算符重载的对象,返回Int16(看看here)< / p>

答案 4 :(得分:0)

从浮点数转换为整数时,有一个重要区别:

  • Convert.ToInt16舍入到最接近的整数(例如1.6 - > 2)
  • 使用(Int16)x截断(例如1.6 - > 1)
  • 进行投射