【问题标题】:Use "int" or "Int32" while type casting? [duplicate]在类型转换时使用“int”或“Int32”? [复制]
【发布时间】:2012-08-07 00:38:17
【问题描述】:

可能重复:
C#, int or Int32? Should I care?

MouseMoved event 被触发时,我正在使用GetPosition(this),因此:

Point pt = e.GetPosition(this);

据我所知,以下两种类型转换都有效,但推荐使用哪一种,为什么?

int x = (int)pt.X;
int x = (Int32)pt.X;

【问题讨论】:

  • samething,当它转换为 IL int 将是 int32 所以不用担心@amit kohan
  • 建议您使用语言提供的数据类型。因此,对于 C#,它将是 int
  • 我的经验法则是使用文档中指定的数据类型。如果PointXY 属性记录为ints,那么这就是我将使用的。
  • @HansPassant X 属性我很确定是双倍的。

标签: c# c#-4.0


【解决方案1】:

它们做的事情完全相同——它们甚至会编译成相同的 IL。 (假设您在某处没有其他疯狂的 Int32 类型...)

int 只是global::System.Int32 的别名。

(这不仅适用于强制转换——几乎在任何使用类型名称的地方。)

【讨论】:

  • 尽管它们有不同的语义,因为Int32 是一个普通标识符,它可以代表任何值(如变量或属性访问)或类型(您可以在其他命名空间中拥有类型,也称为@987654325 @)。另一方面,int 始终是(特定的)类型。一个后果是,如果您对某事进行否定(一元减号),则可以说 (int)-pt.X。但是 (Int32)-pt.X 将始终被视为减法(二进制减号),即使 Int32 只能是给定范围内具有给定名称的类型。当然你可以用(Int32)(-pt.X)来解决这个问题。
猜你喜欢
  • 2020-08-18
  • 1970-01-01
  • 2016-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多