《CLR Via C#》

 CLR Via C#》基本和第一版相同。多了如下几章:泛型,执行异步操作,线程同步。当然了,第二版是根据.NET2.0来写的,完全用的c#来描述,所以里面的细节多少还是有点不同的。昨天刚看完第一版,本来以为今天能顺利把第二版看完(主要看不同的几章),结果看泛型看得我头大了。。。sigh,好多的小于号’<’和大于号’>’阿。看来菜鸟终究是菜鸟!希望不会,一日为菜鸟,终生为XX。。。c#中的泛型其实就是来自c++中的模板,当然了,c#中肯定是提高了不少。比如c#的泛型算法就具有源代码保护功能,而c++模板或者Java的泛型技术就必须提供给准备使用算法的用户。继续看。恩。

附:

C#泛型和C++模板的比较  
   
          Bruce   Eckel
:如何比较C#泛型和C++模板呢?  
   
          Anders   Hejlsberg
:我认为对C#泛型和C++模板之间的区别最好的理解是:C#泛型更像类,只不过它带有类型参数;C++模板接近宏,只不过它看起来像类。  
   
          C#
泛型和C++模板之间最大的区别在于类型检查发生的时机和如何进行实例化。首先,C#在运行时进行实例化。而C++在编译时,或者可能是连接时进行实例化。不管怎么说,C++是在程序运行前进行实例化。这是第一点不同。第二点不同是当你编译泛型类型时,C#会进行强类型检查。对于一个非约束的类型参数,如List<T>,能够在类型为T的值上执行的方法仅仅是那些能够在Object类型中找到的方法,因为只有这些方法是我们能够保证存在的。在C#中,我们要保证在一个类型参数上执行的所有操作都能成功。  
   
          C++
正相反。在C++中,你可以在类型参数所指定的类型的变量上执行你想做的任何操作。但是一旦你对它进行了实例化,它就有可能无法工作,你将会得到一些含义模糊的错误信息。例如,如果你有一个类型参数T,而xyT类型的变量,然后你执行x+y,如果你对两个T定义了一个operator+还好说,否则你就只能得到一些没意义的错误消息。因此,从某种意义上说,C++模板实际上是无类型的,或者说是弱类型的。而C#泛型是强类型的。  

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值