《C# to IL》第四章 关键字和操作符(下)
2009-06-03 08:30:36 来源:WEB开发网a.cs
class zzz
{
public zzz()
{
}
public zzz(int i)
{
}
public static void Main()
{
}
~zzz()
{
System.Console.WriteLine("hi");
}
}
class yyy : zzz
{
}
a.il
.class private auto ansi yyy extends zzz
{
.method public hidebysig specialname rtspecialname instance void .ctor() il managed
{
ldarg.0
call instance void zzz::.ctor()
ret
}
}
在上面的代码中,我们只显示了类yyy。即使我们有2个构造函数和1个析构函数,类yyy只接收默认的无参构造函数。因此,派生类不会从基类中继承构造函数和析构函数。
a.il
.assembly mukhi {}
.class private auto ansi zzz extends [mscorlib]System.Object
{
.method public hidebysig static void vijay() il managed
{
.entrypoint
call void yyy::abc()
ret
}
}
.class private auto ansi yyy extends [mscorlib]System.Array
{
.method public hidebysig static void abc() il managed
{
ldstr "hi"
call void [mscorlib]System.Console::WriteLine(class System.String)
ret
}
}
Output
hi
在C#中,不允许我们从像System.Array这样的类中派生一个类,在IL中没有这样的约束。因此,上面的代码不会生成任何错误。
我们确实能够推断出C#编译器具有上面的约束而IL的约束则比较少。一门语言的规则是由编译器在编译期间决定的。
- ››Illustrator CS6 打造孔雀花纹的字体
- ››TOscilloscope 仿Windows任务管理器CPU使用记录组...
- ››Illustrator教程:设计制作几何花瓣LOGO
- ››Illustrator实例教程:漂亮证卡变幻线的制作
- ››Illustrator文字教程:制作漂亮质感描边字
- ››Illustrator鼠绘:渐变工具运用绘制金属闹钟
- ››Illustrator鼠绘:教你画一个可爱卡通宝宝教程
- ››Illustrator简单四步做透明气泡教程
- ››Illustrator教程:制作漂亮的新货吊牌
- ››Illustrator教程:改变圆角矩形中一个圆角半径
- ››Illustrator教程:如何用网格工具绘制花瓣
- ››Illustrator涂抹命令打造文字草图特效
更多精彩
赞助商链接