脚踏实地学C#1-基元类型
2024-09-08 00:35:40
基元类型:编译器直接支持的数据类型
基元类型直接映射到FCL类库上,如int 和Int32是等价的,只不过是int是c#提供的,Int32是FCL类库提供的。
int只是Int32的别名
using int=System.Int32;
使用Int32:
System.Int32 number = new System.Int32();
number = 2;
Console.WriteLine(number);
Console.ReadKey();
生成IL代码为:
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
.maxstack 1
.locals init (
[0] int32 number)
L_0000: nop
L_0001: ldc.i4.0
L_0002: stloc.0
L_0003: ldc.i4.2
L_0004: stloc.0
L_0005: ldloc.0
L_0006: call void [mscorlib]System.Console::WriteLine(int32)
L_000b: nop
L_000c: call valuetype [mscorlib]System.ConsoleKeyInfo [mscorlib]System.Console::ReadKey()
L_0011: pop
L_0012: ret
}
使用int
int number = new int();
number = 2;
Console.WriteLine(number);
Console.ReadKey();
生成IL代码为:
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
.maxstack 1
.locals init (
[0] int32 number)
L_0000: nop
L_0001: ldc.i4.0
L_0002: stloc.0
L_0003: ldc.i4.2
L_0004: stloc.0
L_0005: ldloc.0
L_0006: call void [mscorlib]System.Console::WriteLine(int32)
L_000b: nop
L_000c: call valuetype [mscorlib]System.ConsoleKeyInfo[mscorlib]System.Console::ReadKey()
L_0011: pop
L_0012: ret
}
通过生成的IL代码对比,发现int和Int32生成的IL代码是一样
上面给number赋值的语法,很不方便,相信没有人会这样,幸好编译器允许代码以简化的语法来操纵他们,
int number=2; //C#简化的语法
Int32 number=2; //FCL简化的语法
最新文章
- CLR via C# 3rd - 04 - Type Fundamentals
- django中间件
- 【读书笔记】iOS-使用Web Service-基于客户端服务器结构的网络通信(一)
- java向oracle数据库中插入当前时间
- Java:Map
- 从0开始学Java——JSP和Servlet——jsp转servlet出错的三个典型场景
- AngularJS 'Controller As'用法
- HDU 4462
- Mvc项目右键没有控制器选项
- Windows Media Player安装了却不能播放网页上的视频
- Selenium 实现联想下拉框
- iOS 使用GBK编码的hmacMD5算法
- vmware workstation 10.0.1 install mac os mavericks
- Delphi过程函数传递参数的八种方式
- hadoop集群安装
- Android 常见adb命令
- WCF TOOL CODE
- ZJOI2018 round^2 游记
- python之爬虫_并发(串行、多线程、多进程、异步IO)
- 跨境网上收款 找PayPal没错(获取Client ID 和 secret)