日期:2014-05-17 浏览次数:20987 次
其实,关于C#中的int与Int32的关系,真的是没什么好说的。
我们都知道,int关键字是 System 命名空间中的预定义类型System.Int32的别名。
在.NET Framework中,这样的关键字还有很多,如short关键字是System.Int16的别名。更多关键字说明可参考:
http://technet.microsoft.com/zh-cn/magazine/ya5y69ds(VS.90).aspx
MSDN上说,C# 类型的关键字及其别名可以互换。下面的两行代码完全等价。
int a = 0; Int32 b=0;
对于这一点,我们可以查看其中间代码来确认,两者生成的中间代码如下:
int32 a int32 b
从这一点也可以看出int关键字最终还是被翻译成了Int32 。
另外,我们在代码中通过F12查看int关键字的定义,会得到int的定义如下:
你看,还是Int32吧。所以说,int与Int32就是一回事。
那么为Int32指定一个别名,这样有什么好处呢?
从定义中,我们还可以发现:Int32被定义为结构体,结构体中包含一些方法。这些方法包括为比较该类型的实例、将实例值转换为它的 String表示形式以及将数字的 String表示形式转换为该类型的实例提供了相应的方法。
具体方法介绍,参考MSDN说明:
http://msdn.microsoft.com/zh-cn/library/system.int32_methods(v=vs.90).aspx
这样一来,所有的基本类型都可以看做是支持某些方法的类了。
开发过程中,我们可以使用熟悉的int关键字来定义整型数据(简单而熟悉),同时还可以使用Int32中的一些方法来处理数据(功能补充)。
如下面代码所示:
int d = 0; string e=d.ToString();
实例中,使用int关键字声明整型变量d,接着调用Int32的ToString()方法将整型变量d 转换成字符串。
要是大家以前做过C开发,就理解成是在以前C关键字int的基础上增加了一些方法而已(不严谨,帮助理解而已)。
那么我们在开发中,可不可以为类型(系统类型和自定义类型)定义别名呢?
是可以的,我们可以使用using指令来定义类型别名。
具体说明,请参考MSDN:http://msdn.microsoft.com/zh-cn/library/sf0df423(v=vs.80).aspx
但是,在C#中不支持typedef关键字,这点需要注意。当然,我们可以通过一些变通方法在C#中来实现typedef的功能。关于这点,可以阅读帖子《typedef in C#》http://www.codeproject.com/Questions/141385/typedef-in-C
就写作么多了,。