浅谈 Microsoft C# 编译器和 Mono C# 编译器
2009-05-09 08:26:41 来源:WEB开发网图片看不清楚?请点击这里查看原图(大图)。
这下,Micorsoft 和 mono 生成的代码又完全一样,奇怪。
下面就是 Block 结构的构造函数:
图片看不清楚?请点击这里查看原图(大图)。
图片看不清楚?请点击这里查看原图(大图)。
从上图中可以看出,Microsoft 生成的代码除了有多余的 nop 以外,还多了以下一行:
IL_0001: initobj Skyiv.Ben.Test.Block
这一行代码,是用来调用 Block 结构的默认(无参的)构造函数,对应下面 C# 源程序代码:
public Block(int id) : this() { Id = id; }
中的“ : this() ” 。
如果删除这个“ : this() ” ,用 Microsoft C# 编译器编译时就会出错,如下所示:
E:work2> csc block.cs
适用于 Microsoft(R) .NET Framework 3.5 版的 Microsoft(R) Visual C# 2008 编译器 3.5.30729.1 版
版权所有(C) Microsoft Corporation。保留所有权利。
block.cs(9,28): error CS0188: 在给“this”对象的所有字段赋值之前,无法使用该对象
block.cs(9,12): error CS0843:
必须对自动实现的属性“Skyiv.Ben.Test.Block.Id”的支持字段完全赋值,才能
将控制返回给调用方。请考虑从构造函数初始值设定项中调用默认构造函数。
block.cs(9,12): error CS0843:
必须对自动实现的属性“Skyiv.Ben.Test.Block.Time”的支持字段完全赋值,才
能将控制返回给调用方。请考虑从构造函数初始值设定项中调用默认构造函数。
E:work2>
- ››Microsoft Outlook 2010 邮箱客户端中常用邮件设置...
- ››Microsoft Office2007Open XML 格式的术语表
- ››Microsoft PowerPoint 2010介绍
- ››Microsoft ReportViewer(微软报表)项目中的应用...
- ››MonoDevelop 让Mac OSx/ Linux ...下写C#更轻松
- ››Microsoft APP-V 4.5使用经验之序列化工具
- ››Microsoft Access 2010的十大优势详解
- ››Microsoft数据访问技术简介
- ››Microsoft My Phone for Windows Mobile 6+ 新版发...
- ››MonoTouch 可将 Xbox 游戏移植 iPhone
- ››Microsoft Security Essentials 1.0.1959.0
- ››Microsoft Office Access 2007年中选项组控件中您...
更多精彩
赞助商链接