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也可以有委托等。
分享到:
相关推荐
JAVA程序员简历模板 JAVA程序员简历模板
Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历...
java程序员简历模版java程序员简历模版java程序员简历模版java程序员简历模版java程序员简历模版java程序员简历模版java程序员简历模版java程序员简历模版java程序员简历模版java程序员简历模版java程序员简历模版...
java程序员笔试题java程序员笔试题
《Java程序员面试宝典》列举了各大IT公司的面试真题,详细分析了应聘Java程序员职位的常见考点,主要内容包括面试流程及求职准备、Java语言基础、数据类型、集合框架、图形用户界面、输入与输出、多线程、反射机制、...
java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流...
Java程序员面试笔试真题与解析,包含各大IT企业面试笔试的题目
java程序员转正pptjava程序员转正pptjava程序员转正ppt
Java程序员面试笔试真题与解析,高清,绝对高清制作的
Java程序员面试笔试宝典-何昊pdf版,高清,带有书签。
JAVA程序员面试 JAVA程序员面试 JAVA程序员面试 JAVA程序员面试
月薪过万的入门必知知识,黑马程序员入学Java精华总结
java程序员面试题java程序员面试题java程序员面试题java程序员面试题java程序员面试题java程序员面试题
Java程序员职场全攻略 Java程序员职场全攻略 Java程序员职场全攻略 Java程序员职场全攻略
java程序员个人简历.doc JAVA软件工程师简历范文.docx Java软件开发工程师个人简历模板.doc 个人简历(示范案例).doc 应届生Java开发个人简历.doc 非常经典java求职简历(三套-含项目介绍).doc 高级Java工程师架构师-...
针对Java程序员的C#快速入门教程。 目录
内容概要:该资源是一份优秀的Java程序员简历模板,包含了详细的简历内容和排版样式,适用于Java程序员求职应聘时使用。 适用人群:Java程序员、计算机科学和技术相关专业的学生和毕业生、招聘人员和HR等对Java...
Java 程序员宝典 pdf 电子书Java 程序员宝典 pdf 电子书Java 程序员宝典 pdf 电子书
Java程序员上班那点事 Java程序员上班那点事 Java程序员上班那点事 Java程序员上班那点事
2018年最新版Java程序员面试宝典,面试的神器,可以有效的通过面试环节,得到满意的工作