锁定老帖子 主题:java和C#的泛型比较
精华帖 (18) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-01
RednaxelaFX 写道 ray_linn 写道 mooniscrazy 写道 泛型也就那么回事吧。写代码方便而已。
写代码方便? 你再开玩笑吧?有了泛型写代码还的多打好几个字<...>呢,如果你这样看泛型,那你就根本没学好泛型 呵呵,说写代码方便也可以,典型的场景是声明了泛型容器之后,从容器取出元素的时候不必显式写类型转换。不过要注意的是Java泛型是擦除法,自己的代码里不写类型转换不代表没转换——编译器会插入相关的类型转换代码,来保证运行时的类型安全。 不过泛型确实不只是“写代码方便”那么简单就是了,呵呵。有没有人想过在.NET里用了泛型之后方法调用反而可能变慢?呵呵,要是一直有在用Mono的话就会知道我在说什么。 Mono现在怎么样? |
|
返回顶楼 | |
发表时间:2009-04-01
imjl 写道 RednaxelaFX 写道 ray_linn 写道 mooniscrazy 写道 泛型也就那么回事吧。写代码方便而已。
写代码方便? 你再开玩笑吧?有了泛型写代码还的多打好几个字<...>呢,如果你这样看泛型,那你就根本没学好泛型 呵呵,说写代码方便也可以,典型的场景是声明了泛型容器之后,从容器取出元素的时候不必显式写类型转换。不过要注意的是Java泛型是擦除法,自己的代码里不写类型转换不代表没转换——编译器会插入相关的类型转换代码,来保证运行时的类型安全。 不过泛型确实不只是“写代码方便”那么简单就是了,呵呵。有没有人想过在.NET里用了泛型之后方法调用反而可能变慢?呵呵,要是一直有在用Mono的话就会知道我在说什么。 Mono现在怎么样? 已经算是比较stable,实现了.net 2.0了吧 |
|
返回顶楼 | |
发表时间:2009-04-01
最后修改:2009-04-01
.NET从2.0开始有很长一段时间没有动过下面的虚拟机CLR,一直到3.5SP1的时候才顺带发布了2.0SP2,其中带有CLR的更新;但是MSIL指令集从.NET 2.0开始就没变过了。
这对Mono来说是件好事,因为在虚拟机层上他们可以集中精力去实现一个固定的标准,投入精力去满足标准和提高性能。虽然现在Mono还比CLR慢,不过速度提升的势头还是很不错的。 Mono目前没有实现CAS,只在当前的trunk里实现了CoreCLR的安全模型,包括沙箱、IL验证器之类。要等到Mono 2.6才会把这个安全模型正式发布出来。 Mono项目中的C#编译器已经基本实现了C# 3.0的支持,可以编译LINQ代码。VB编译器则支持到VB.NET 8。 Mono的类库有自己的特色。标准库方面,核心库实现得已经很多了;WinForms相关的API基本实现到了2.0水平,虽说实际用还是可能会碰到小问题;LINQ to Db的整合会在Mono 2.6实现;WCF和WPF没有实现的计划。在标准库之外,Mono还有许多自己的有趣的库,包括Gtk#、Mono.Options、CSharpEvaluator等。MonoDevelop的GUI就是基于Gtk#来做的,现在看来还不错。 我还没部署过XSP所以不太清楚对ASP.NET的支持到什么程度了,貌似……还成? |
|
返回顶楼 | |
发表时间:2009-04-01
最后修改:2009-04-01
RednaxelaFX 写道 .NET从2.0开始有很长一段时间没有动过下面的虚拟机CLR,一直到3.5SP1的时候才顺带发布了2.0SP2,其中带有CLR的更新;但是MSIL指令集从.NET 2.0开始就没变过了。
这对Mono来说是件好事,因为在虚拟机层上他们可以集中精力去实现一个固定的标准,投入精力去满足标准和提高性能。虽然现在Mono还比CLR慢,不过速度提升的势头还是很不错的。 Mono目前没有实现CAS,只在当前的trunk里实现了CoreCLR的安全模型,包括沙箱、IL验证器之类。要等到Mono 2.6才会把这个安全模型正式发布出来。 Mono项目中的C#编译器已经基本实现了C# 3.0的支持,可以编译LINQ代码。VB编译器则支持到VB.NET 8。 Mono的类库有自己的特色。标准库方面,核心库实现得已经很多了;WinForms相关的API基本实现到了2.0水平,虽说实际用还是可能会碰到小问题;LINQ to Db的整合会在Mono 2.6实现;WCF和WPF没有实现的计划。在标准库之外,Mono还有许多自己的有趣的库,包括Mono.Options、CSharpEvaluator等。 我还没部署过XSP所以不太清楚对ASP.NET的支持到什么程度了,貌似……还成? 里面的net api库相当不错,比如flickr的 |
|
返回顶楼 | |
发表时间:2009-04-02
RednaxelaFX 写道 .NET从2.0开始有很长一段时间没有动过下面的虚拟机CLR,一直到3.5SP1的时候才顺带发布了2.0SP2,其中带有CLR的更新;但是MSIL指令集从.NET 2.0开始就没变过了。
这对Mono来说是件好事,因为在虚拟机层上他们可以集中精力去实现一个固定的标准,投入精力去满足标准和提高性能。虽然现在Mono还比CLR慢,不过速度提升的势头还是很不错的。 Mono目前没有实现CAS,只在当前的trunk里实现了CoreCLR的安全模型,包括沙箱、IL验证器之类。要等到Mono 2.6才会把这个安全模型正式发布出来。 Mono项目中的C#编译器已经基本实现了C# 3.0的支持,可以编译LINQ代码。VB编译器则支持到VB.NET 8。 Mono的类库有自己的特色。标准库方面,核心库实现得已经很多了;WinForms相关的API基本实现到了2.0水平,虽说实际用还是可能会碰到小问题;LINQ to Db的整合会在Mono 2.6实现;WCF和WPF没有实现的计划。在标准库之外,Mono还有许多自己的有趣的库,包括Gtk#、Mono.Options、CSharpEvaluator等。MonoDevelop的GUI就是基于Gtk#来做的,现在看来还不错。 我还没部署过XSP所以不太清楚对ASP.NET的支持到什么程度了,貌似……还成? asp.net支持不错。 www.mononet.cn就是一个例子。 wpf,wcf看起来mono不会支持。现在winforms的bug还很多,能解决大部分就不错了。 说实在cross-platform大部分都有各种各样的问题,不像说得那么好。 |
|
返回顶楼 | |
发表时间:2009-04-02
最后修改:2009-04-02
Miguel说Mono不会主动去实现WPF,除非有贡献者特别有爱自告奋勇去实现出来。但他同时也对Silverlight非常感兴趣,很热衷将Moonlight搞好。他有些有趣的打算,想将Moonlight带到桌面,甚至通过完全AOT模式编译来将Moonlight带到iPhone上(因为iPhone不允许第三方程序使用动态编译,所以要在iPhone上部署Mono就必须采用AOT而不能用JIT)。如果能成功实现Silverlight 2或3的进度,Moonlight倒像是个小型WPF了。
前面提到Mono的trunk里已经有CoreCLR中的安全机制的实现,也巧,.NET这边也在反思到底CAS是不是一个好的设计;在MIX09的CoreCLR session里,Brandon说.NET 4里的新CLR会考虑学习CoreCLR得到的经验,使用简化的安全模型。 |
|
返回顶楼 | |
发表时间:2009-04-02
RednaxelaFX 写道 用于生成源码的模板的话,String Template如何?ANTLR也是用它来作为后端来生成源码的,可以说品质有保证。
头像呀, 你也喜欢皇? 我的最爱呀。 高达00 握手。 |
|
返回顶楼 | |
发表时间:2009-04-02
xiaoyu 写道 头像呀, 你也喜欢皇? 我的最爱呀。 高达00 握手。
握手。皇小姐美甚。粉红也美甚。 (well还是不要在这帖灌水了……) 其实说到Java与C#的泛型比较,这帖里还没人提到协变和逆协变呢。虽然其实已经有协变的代码出现过…… |
|
返回顶楼 | |
发表时间:2009-04-02
最后修改:2009-04-02
RednaxelaFX 写道 xiaoyu 写道 头像呀, 你也喜欢皇? 我的最爱呀。 高达00 握手。
握手。皇小姐美甚。粉红也美甚。 (well还是不要在这帖灌水了……) 其实说到Java与C#的泛型比较,这帖里还没人提到协变和逆协变呢。虽然其实已经有协变的代码出现过…… 钉宫病飘过(不过黑化钉宫砍了包子娘TAT)...协变嘛...偏题了吧 |
|
返回顶楼 | |
发表时间:2009-04-03
量产型人型自走炮 写道 钉宫病飘过(不过黑化钉宫砍了包子娘TAT)...协变嘛...偏题了吧
但包子娘的人气不高吧?至少在我认识的人里她人气不咋…… 协变哪里偏题了嘛,你看到C# 4.0之前C#的泛型都不是协变/逆协变的,而Java泛型则从出现就一直支持这两个功能。也是值得对比的地方哦~ |
|
返回顶楼 | |