《C# to IL》第四章 关键字和操作符(下)
2009-06-03 08:30:36 来源:WEB开发网如果在xxx中没有构造函数,那么就会抛出下列异常:
Output
Exception occurred: System.InvalidCastException: An exception of type System.InvalidCastException was thrown.
at zzz.vijay()
在上面的例子中,我们创建了2个对象a和b,它们分别是类yyy和xxx的实例。类xxx是派生类而yyy是基类。我们能写出a=b,如果我们使一个派生类和一个基类相等,那么就会生成一个错误。因此,就需要一个转换操作符。
在C#中,cast会被转换为castclass指令,后面紧跟着派生类的名称,也就是要被转换到的类。如果它不能被转换,就会触发上面提到的异常。
在上面的代码中,没有构造函数,从而,就会生成异常。
因此,IL具有大量高级的用来处理对象和类的准则。
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,class xxx V_1)
newobj instance void yyy::.ctor()
stloc.0
newobj instance void xxx::.ctor()
stloc.1
ldloc.1
stloc.0
ldloc.0
castclass xxx
stloc.1
ret
}
}
.class private auto ansi yyy extends [mscorlib]System.Object
{
}
.class private auto ansi xxx extends [mscorlib]System.Object
{
.method public hidebysig specialname rtspecialname instance void .ctor() il managed
{
ldarg.0
call instance void System.Object::.ctor()
ret
}
}
- ››Illustrator CS6 打造孔雀花纹的字体
- ››TOscilloscope 仿Windows任务管理器CPU使用记录组...
- ››Illustrator教程:设计制作几何花瓣LOGO
- ››Illustrator实例教程:漂亮证卡变幻线的制作
- ››Illustrator文字教程:制作漂亮质感描边字
- ››Illustrator鼠绘:渐变工具运用绘制金属闹钟
- ››Illustrator鼠绘:教你画一个可爱卡通宝宝教程
- ››Illustrator简单四步做透明气泡教程
- ››Illustrator教程:制作漂亮的新货吊牌
- ››Illustrator教程:改变圆角矩形中一个圆角半径
- ››Illustrator教程:如何用网格工具绘制花瓣
- ››Illustrator涂抹命令打造文字草图特效
更多精彩
赞助商链接