`

BUG吗?虫虫吗?

阅读更多

实在不好意思,今天才发现博客园电子期刊第一期.马上下了一个回来拜读.相见恨晚呀.
篇篇精彩,一个也没有错过.

但是我在看这篇文章<<关于枚举的种种>>时,发现一个小错误.请看文章中的一段代码:

 

// Code #13
// See Code #01 for Alignment.
public static void Main()
{
      IConvertible ic 
= (IConvertible)Alignment.Center;
      
int i = ic.ToInt32(null);
      Console.WriteLine(
"The value of Alignment.Center is {0}.", i);
}


// Output:
// The value of Alignment.Center is 1.

 

这段代码编译会出错误.系统是无法将类型“Alignment”转换为“System.IConvertible”
我们都知道枚举是值类型,枚举的父类是System.Enum,它是一个抽象类.引用类型.
它实现了3个接口IConvertible,IComparable, IFormattable

所以我认为正确代码:

IConvertible ic = (System.Enum)Alignment.Center;
int i = ic.ToInt32(null);
Console.WriteLine(
"The value of Alignment.Center is {0}.", i);

 

说明:应该把枚举先装箱为它的父类,再调用父类的接口方法.
同时我用.net reflector看了IL代码,证明我的想法是正确的.
.method private hidebysig static void Main(string[] args) cil managed
{
      .custom instance void [mscorlib]System.STAThreadAttribute::.ctor()
      .entrypoint
      // Code Size: 32 byte(s)
      .maxstack 2
      .locals (
            [mscorlib]System.IConvertible convertible1,
            int32 num1)
      L_0000: ldc.i4.1
      L_0001: box ConsoleApplication1.Alignment
      L_0006: stloc.0
      L_0007: ldloc.0
      L_0008: ldnull
      L_0009: callvirt instance int32 [mscorlib]System.IConvertible::ToInt32([mscorlib]System.IFormatProvider)
      L_000e: stloc.1
      L_000f: ldstr "The value of Alignment.Center is {0}."
      L_0014: ldloc.1
      L_0015: box int32
      L_001a: call void [mscorlib]System.Console::WriteLine(string, object)
      L_001f: ret
}

但是我看它转化后的C#代码:
private static void Main(string[] args)
{
      IConvertible convertible1 = Alignment.Center;
      int num1 = convertible1.ToInt32(null);
      Console.WriteLine("The value of Alignment.Center is {0}.", num1);
}

说明:IConvertible convertible1 = Alignment.Center,这句怎么能通过?没有明白,希望有人能够指导.

最后祝福博客园电子期刊红火起来.
"质量第一"是我们出刊的中心原则,希望质量能更上一层楼.

 

 

分享到:
评论

相关推荐

    Flash游戏——虫虫大战(bug war)

    设计精美的flash小游戏,一共2个,bug war 1,2,非常好玩!

    方便高效实用的远程数据库对象(delphi 版)

    下来大概看了看,貌似使用起来不太方便,曾经用过ASTA和RmoObject,都不是那么让人满意,BUG多,并且庞大需要安装,使用十分不方便。 为了继续支持我喜欢的DELPHI和可爱的盒子, 特发布个自己写的远程数据库对象希望...

    CDS_uniDAC_mmzmagicrmoV1.80

    下来大概看了看,貌似使用起来不太方便,曾经用过ASTA和RmoObject,都不是那么让人满意,BUG多,并且庞大需要安装,使用十分不方便。 为了继续支持我喜欢的DELPHI和可爱的盒子, 特发布个自己写的远程数据库对象希望...

    bugbot:B点点社区的BugBot

    虫虫机器人 :bug: Dot社区的BugBot

    虫虫班级同学录程序 V1.1

    虫虫同学录(Lb_Class)V1.1元旦特别版 权力与义务: 1.你可以免费无期限地使用此同学录 2.未经许可不得修改程序版权 3.可以免费分发此程序源码,但最好通知本人 4.允许修改本程序除版权外的源码,但必需在程序后注明...

    bug-bounty-dorks:拥有负责披露程序错误赏金计划的网站的Google Dorks列表

    虫虫赏金虫 Google Dorks列表,用于搜索拥有负责任的披露程序或Bug赏金计划的公司,这些公司与已知的Bug赏金平台(例如HackerOne或Bugcrowd)无关。 拉请求是欢迎的! 有些傻瓜来自Nightwatch Cyber​​security ...

    FLASH小游戏合集 第一弹 绝对经典!

    Bug war 1,2 虫虫大战 Electric Box 1,2 电箱 Kingdom Rush v1.07 王国保卫战v1.07 Mamono Slayer 城堡探险 On the Edge 站在世界的尽头 第二集 9个 XENO TACTIC 机动炮塔防御战 BOWJA THE NINJA 1,2,3(上,下) ...

    FLASH小游戏合集 第三弹 绝对经典!

    Bug war 1,2 虫虫大战 Electric Box 1,2 电箱 Kingdom Rush v1.07 王国保卫战v1.07 Mamono Slayer 城堡探险 On the Edge 站在世界的尽头 第二集 9个 XENO TACTIC 机动炮塔防御战 BOWJA THE NINJA 1,2,3(上,下) ...

    FLASH小游戏合集 第二弹 绝对经典!

    Bug war 1,2 虫虫大战 Electric Box 1,2 电箱 Kingdom Rush v1.07 王国保卫战v1.07 Mamono Slayer 城堡探险 On the Edge 站在世界的尽头 第二集 9个 XENO TACTIC 机动炮塔防御战 BOWJA THE NINJA 1,2,3(上,下) ...

    美图贴贴iPhone版 v2.5.rar

    3、修复小bug,虫虫都消灭!    赶快加入我们吧,美丽心情随心贴,跟【美颜相机】一起使用,让你更加美丽动人哟!  ·官方网站:tietie.meitu.com  ·您可以在新浪微博搜索“美图贴贴”找到我们!  ·如果...

    escuelajs-reto-05:Reto 5月9日28

    虫虫(Bug),人员名单,个人身份证明书和“相交观察员”佩罗·沃勒夫(Petro Vuelve)的犯罪者符合hagamos滚动。除错Visita el sitio网站: ://100tifi.co安装npm installEjecución npm run startDocumentación...

    wordpress主题柒比贰7b2去授权无限制版[更新至V2.9.9]

    2.9.9更新,修复了一些页面404的bug 1、支付更新 增加支付宝当面付(需要再支付宝商户中签约了当面付,然后在支付设置-&gt;支付宝设置中启用当面付即可) 增加了 payjs 微信内部直接发起支付,不用扫码 上面两个更新...

    wordpress微信小程序星尘UI V1.3

    星尘UI是枫瑞博客网...2.个人中心bug 3.海报 4.专题移除阴影,删除无用的订阅 5.登录弹窗美化 6.移除博客相关字眼 7.关链微信公众号主键自动中间位置 8.列表动画 9.修复首次大家 引导收藏位置错乱 10.新增小程序跳转

    【ripro7.2主题美化】全站美化包WordPress RiPro主题二开美化版hu-childV1.9(功能集成到后台)

    【ripro7.2主题美化】全站美化包WordPress RiPro主题二开美化版hu-childV1.9(功能集成到后台) 本子主题美化包无加密无授权无暗链,使用本美化包前请先下载...1、评论在普通文章不显示bug修复 2、更新兼容7.2版本

Global site tag (gtag.js) - Google Analytics