JAVA程序员看C#的精华与糟粕
C#和java是号称90%的相同加上10%的不同。因此当时我学习C#,阅读两种代码完全没有什么阻碍。
对C#了解得深入以后,来发表下对这两种语言各自特性的一些看法
比较起java和C#大相径庭的那10%,会发现C#五花八门的特性要多很多。比较知名的有:委托,属性,真正的泛型,索引器,类初始化器,分部类,操作符重载,struct,unsafe代码,IDisposable等,另外.net framework 3.5还加了一大串纯粹由编译器提供的特性。
委托,这个可以算是C#之于java的最大优势。虽然java可以依靠接口,匿名内部类这些特性实现委托一样的功能,但却要麻烦许多,如果涉及到N个委托实例相加的情况,那么一个C#里面简单的"+"号,在java里就只能用FilterChain,InterceptorStack这种概念了。
属性,据说属性信息是带到运行时的,后查看反射的确有PropertyInfo类,之前说它是编译器语法糖是受了某篇分析IL代码的文章误导,不过这个是不是语法糖都没什么关系,它和java普遍做法的get,set各有优劣。属性写起来简捷,但却比较难看出哪些属性是只读,哪些是只写不读。
真正的泛型,这个又是一大C#的优势,同时伪泛型又是java的一大败笔。但是java年代比较长,为兼容性考虑不得不使用假的泛型实现。如果泛型不是在jdk1.5时推出,而是在jdk1.4,和collection framework一起推出,我认为它也会采用真正的泛型实现。
索引器,有了这个很多容器类都可以直接用[]取元素,感觉还不错,比没有好,编译器的小把戏。
类初始化器,典型的懒汉特性。每次用顶多能省下一两行代码,又是编译器的小把戏。
分部类(partial class),纯粹为了vs.net的那一大堆图形化设计器老和人的代码冲突而搞出来得玩意,又是编译器的小把戏。
操作符重载,属于用到得不多,要用时却显得特别有用的东西,很奇怪java为什么不提供这个功能。
struct,在堆栈上的东西,释放内存那是超级的快,只不过需要用到这个的场合,大概都在使用C++编程。
unsafe代码,纯粹增加语言复杂性的东西。就好像一个人搬家,看这个不舍得扔,那个也不舍得扔,搞到最后把瓶瓶罐罐都搬走了。
IDisposable,实现这个接口,配合using块,非常的强大,终于可以像C++那样掌握对象的销毁了。
接着说说java比C#多的特性:
匿名内部类:真是极端方便的一个东西,还和JAVA的好多设计模式有关系,不过C#把java匿名内部类的写法拿去用作类初始化器了,糟蹋了...
动态代理: java里面要实现AOP,易如反掌;C#要实现AOP,难如登天,不得不借助Assamble命名空间下的那些动态IL生成工具。这就是动态代理的作用。
希望有一天C#可以拥有匿名内部类和动态代理,变得更完善。也希望java也可以有委托等。
from:https://www.cnblogs.com/melode11/archive/2008/10/07/1305189.html
JAVA程序员看C#的精华与糟粕相关推荐
- PHP笔记——java程序员看懂PHP程序
PHP笔记--java程序员看懂PHP程序 php是一种服务器端脚本语言,类型松散的语言. <?php ?> xml风格 <script language=" ...
- 程序员中年危机:半路出家Java程序员看我轻松逆袭
前言 毕业以来,还算顺利的进入一家互联网公司,从事Java后端的开发.一路走来将近八年的光景,期间经历过刚毕业工作的狂喜,也遇到过因工作失误而受到的打击.我觉得这都是一种历练,经过这些磨砺,算是学到了 ...
- 半路出家Java程序员看我轻松逆袭!砥砺前行!
前言 再过一周,马上将迎来新的一年,希望大家在2021年"牛气冲天,牛年大吉",一起迎接春暖花开之时. 金三银四马上就到了,很多粉丝朋友私信希望我出一篇面试专题或者分享面试相关的笔 ...
- java可以看懂php代码吗_PHP笔记——java程序员看懂PHP程序
1.php是一种服务器端脚本语言,类型松散的语言. 2.<?php ?>xml风格 脚本风格 ?>简短风格 ASP风格 以;结尾: 3.注释: a)// b)# c)/**/ 4.变 ...
- java书籍_这本最适合夯实基础的Java 书籍,80% 的 Java 程序员没认真看过
今天要给大家带来的一本书,是大名鼎鼎的head first系列丛书的一本<head first Java>相信很多学习Java的朋友对它都不会陌生. 深入浅出系列书籍是由O'Reilly出 ...
- 程序员应该知道的——《Java程序员上班那点事儿》精华
(written in 2010-03-31 19:52:19 ) 两个星期之前我就已经把钟声写的<Java程序员上班那点事儿>看完了,但是因为最近迷上了玩一个让我不长进的游戏,所以一直没 ...
- JAVA程序员路线要看的书籍-看看能不能逃脱这41本书
Java程序员在入门时,最痛苦的事情莫过于选择入门书籍,很多的同学在会咨询我,推荐下应该看什么书.市面上很多人都会出各种各样的书籍.一些技术大拿,企业经理,或者培训机构的老师都会出来很多教材.层次参差 ...
- Java程序员总结出必看的初级~高级技术面试题
1换位思考下,如果你面试官,你会怎么做 1只能通过简历和面试来衡量,别无他法.如果某位大牛确认能力很行,但面试时无法充分地自证能力,那对不起了,过不了,现实就这样. 2如果面试官由于能力不行,招进来一 ...
- 2017年秋招美团Java程序员开发,看我如何拿到offer
转载自 2017年秋招美团Java程序员开发,看我如何拿到offer 本人是一名本科毕业非计算机专业的程序员,面了阿里,结果没过,最后面上了美团,热乎乎的面经,昨天面的美团,虽然面完了HR面,但是感 ...
最新文章
- RDIFramework.NET ━ .NET快速信息化系统开发框架-4.1 平台登录模块
- centos7光盘修复 grub_CentOs7怎样修复MBR和GRUB?
- 中篇 | 多轮对话机器之话题意图识别
- 已拦截跨源请求:同源策略禁止读取位于XXXXXXXXXXXXXXXX/demo_test.txt 的远程资源。(原因:CORS 请求不是 http)
- 1 加到 100 的 时间复杂度 C#.
- 一个关于人工智能实现的讨论
- java访问本地文件_java 读取本地文件 更改
- 设计抗住千万级流量的架构思路(转)
- java 执行代码超时,如何在Java中使用超时调用一些阻塞方法?
- typescript的基本类型
- JAVA实现图的邻接表以及DFS
- QuickWAP实现网页跳转
- JavaWeb出现404一个很隐蔽的原因
- 四则运算界面版 结对子
- 互联网常用系统监控工具
- es java api 获取总数_java Es Api --解决大量数据查询
- 技嘉主板的 BIOS 问题解决
- 神经机器翻译中有用的技巧
- hotspot解释器和JIT
- python相关库快速下载