IronPython的第三块鳞片(补充)

         在9月份的Mail List中还有一个message也是很有价值的。在Interactive的方式下,键入如下两行代码:

None.gif >>> from System.Console import  *
None.gif
>>> WriteLine( " Hello,world! " )

屏幕上并不会出现我们所期待的Hello,world! 倒是出现了一个True。如果将第二行改为WriteLine("{0}","Hello,World!"),我们就能够看到我们期待的Hello,world!了,这是怎么回事呢?
        因为IronPython在调用CLR中方法的时候,都是使用了反射的机制。当一个方法被重载(overload)了,也就是说有多个同名函数对应类型不同或者个数不同参数的时候,这些函数都会存放在一个list中。IronPython并没有去搜索最适合的方法,只是简单地检查了参数的个数是否匹配,那么结果就可想而知了:参数个数为1的WriteLine函数有很多,而WriteLine(bool)在整个list中排在了最前面,而且在Python的语法当中,string类型是可以隐式转换为bool类型的,因此WriteLine(bool)就被调用了。而对应参数个数为2的WriteLine方法就只有一个WriteLine(String,Object),那么在Interactive方式下WriteLine("{0}","Hello,World!")是可以被正确调用的。

转载于:https://www.cnblogs.com/perhaps/archive/2004/09/23/45922.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值