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#的精华与糟粕相关推荐

  1. PHP笔记——java程序员看懂PHP程序

    PHP笔记--java程序员看懂PHP程序 php是一种服务器端脚本语言,类型松散的语言. <?php   ?>       xml风格 <script language=" ...

  2. 程序员中年危机:半路出家Java程序员看我轻松逆袭

    前言 毕业以来,还算顺利的进入一家互联网公司,从事Java后端的开发.一路走来将近八年的光景,期间经历过刚毕业工作的狂喜,也遇到过因工作失误而受到的打击.我觉得这都是一种历练,经过这些磨砺,算是学到了 ...

  3. 半路出家Java程序员看我轻松逆袭!砥砺前行!

    前言 再过一周,马上将迎来新的一年,希望大家在2021年"牛气冲天,牛年大吉",一起迎接春暖花开之时. 金三银四马上就到了,很多粉丝朋友私信希望我出一篇面试专题或者分享面试相关的笔 ...

  4. java可以看懂php代码吗_PHP笔记——java程序员看懂PHP程序

    1.php是一种服务器端脚本语言,类型松散的语言. 2.<?php ?>xml风格 脚本风格 ?>简短风格 ASP风格 以;结尾: 3.注释: a)// b)# c)/**/ 4.变 ...

  5. java书籍_这本最适合夯实基础的Java 书籍,80% 的 Java 程序员没认真看过

    今天要给大家带来的一本书,是大名鼎鼎的head first系列丛书的一本<head first Java>相信很多学习Java的朋友对它都不会陌生. 深入浅出系列书籍是由O'Reilly出 ...

  6. 程序员应该知道的——《Java程序员上班那点事儿》精华

    (written in 2010-03-31 19:52:19 ) 两个星期之前我就已经把钟声写的<Java程序员上班那点事儿>看完了,但是因为最近迷上了玩一个让我不长进的游戏,所以一直没 ...

  7. JAVA程序员路线要看的书籍-看看能不能逃脱这41本书

    Java程序员在入门时,最痛苦的事情莫过于选择入门书籍,很多的同学在会咨询我,推荐下应该看什么书.市面上很多人都会出各种各样的书籍.一些技术大拿,企业经理,或者培训机构的老师都会出来很多教材.层次参差 ...

  8. Java程序员总结出必看的初级~高级技术面试题

    1换位思考下,如果你面试官,你会怎么做 1只能通过简历和面试来衡量,别无他法.如果某位大牛确认能力很行,但面试时无法充分地自证能力,那对不起了,过不了,现实就这样. 2如果面试官由于能力不行,招进来一 ...

  9. 2017年秋招美团Java程序员开发,看我如何拿到offer

    转载自  2017年秋招美团Java程序员开发,看我如何拿到offer 本人是一名本科毕业非计算机专业的程序员,面了阿里,结果没过,最后面上了美团,热乎乎的面经,昨天面的美团,虽然面完了HR面,但是感 ...

最新文章

  1. RDIFramework.NET ━ .NET快速信息化系统开发框架-4.1 平台登录模块
  2. centos7光盘修复 grub_CentOs7怎样修复MBR和GRUB?
  3. 中篇 | 多轮对话机器之话题意图识别
  4. 已拦截跨源请求:同源策略禁止读取位于XXXXXXXXXXXXXXXX/demo_test.txt 的远程资源。(原因:CORS 请求不是 http)
  5. 1 加到 100 的 时间复杂度 C#.
  6. 一个关于人工智能实现的讨论
  7. java访问本地文件_java 读取本地文件 更改
  8. 设计抗住千万级流量的架构思路(转)
  9. java 执行代码超时,如何在Java中使用超时调用一些阻塞方法?
  10. typescript的基本类型
  11. JAVA实现图的邻接表以及DFS
  12. QuickWAP实现网页跳转
  13. JavaWeb出现404一个很隐蔽的原因
  14. 四则运算界面版 结对子
  15. 互联网常用系统监控工具
  16. es java api 获取总数_java Es Api --解决大量数据查询
  17. 技嘉主板的 BIOS 问题解决
  18. 神经机器翻译中有用的技巧
  19. hotspot解释器和JIT
  20. python相关库快速下载

热门文章

  1. 在路上---一个平凡人的2015年总结及2016年展望
  2. 读logback源码系列文章(五)——Appender --转载
  3. IBM:决胜量子计算五大战略!商用近在咫尺
  4. 全行业的关键点是探索数据的价值 挖掘商业模式
  5. 专访小米欧阳辰:深度揭秘小米广告平台的构建、底层模块和坑
  6. 三、【线性表】线性表概述
  7. Apache Kafka-消费端_顺序消费的实现
  8. Oracle查询优化-01单表查询
  9. Oracle海量数据优化-02分区在海量数据库中的应用-更新中
  10. java对cookie的操作_java对cookie的操作