WEB开发网
开发学院软件开发C语言 《C# to IL》第四章 关键字和操作符(下) 阅读

《C# to IL》第四章 关键字和操作符(下)

 2009-06-03 08:30:36 来源:WEB开发网   
核心提示: 在上面的例子中,类xxx不再从类yyy中派生,《C# to IL》第四章 关键字和操作符(下)(7),它们都是从Object类中派生的,但是,只能从中派生,上面的代码应该生成一个错误,我们可以把类yyy转换为类xxx,在带有构造函数的类xxx中不会生成任何错误

在上面的例子中,类xxx不再从类yyy中派生。它们都是从Object类中派生的。但是,我们可以把类yyy转换为类xxx。在带有构造函数的类xxx中不会生成任何错误,但是如果移除了这个构造函数,就会生成异常。IL还具有它自己的独特工作方式。

a.il

.assembly mukhi {}
.class private auto ansi sealed zzz extends [mscorlib]System.Object
{
.method public hidebysig static void vijay() il managed
{
.entrypoint
ret
}
}
.class private auto ansi yyy extends zzz
{
}

文档非常清晰地表示了一个密闭类不能被进一步扩展或子类化。在这个例子中,我们希望看到一个错误但是什么也不会生成。必须提醒你的是,我们现在使用的是beta版本。下一个版本可能会生成一个错误。

a.il

.assembly mukhi {}
.class private auto ansi zzz extends [mscorlib]System.Object
{
.method public hidebysig static void vijay() il managed
{
.entrypoint
.locals (class yyy V_0)
newobj     instance void yyy::.ctor()
stloc.0
ret
}
}
.class private auto ansi abstract yyy
{
}

抽象类不能被直接使用。只能从中派生。上面的代码应该生成一个错误,但并不是这样。

a.cs

public class zzz
{
const int i = 10;
public static void Main()
{
System.Console.WriteLine(i);
}
}

a.il

.assembly mukhi {}
.class private auto ansi zzz extends [mscorlib]System.Object
{
.method public hidebysig static void vijay() il managed
{
.entrypoint
ldc.i4.s   10
call void [mscorlib]System.Console::WriteLine(int32)
ret
ret
}
}

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:to IL 第四章

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接