Java 和 C# 最大的不同是什么?

作者:Jaskey Lam

链接:https://www.zhihu.com/question/20451584/answer/30195966

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

以下手工翻译自stackoverflow,由于只是大学学过C#,大部分时间都是写Java,所以只翻译部分能看懂的回答。

泛型不一样,Java泛型只是编译时的,但C#的泛型在运行时也被维持,而且适用于value types 和 reference types

C# 没有 checked exceptions

Java 不允许建立user-defined 的value types

Java 不允许运算符重载

Java 没有类似LINQ的特性

Java 不支持委托

C# 没有匿名内部类

C#没有像java 那样的内部类,所有的nested classes 其实都像Java 的静态nested classses

Java 没有静态类

Java 没有 扩展方法(extension methods)

两者的访问修饰符有一定区别

两者初始化(initialization)的顺序有一定不同。C#初始化变量后才调用父类的构造方法

Java 没有类似“properties”的东西,而是约定俗成为getter 和setter

Java 没有类似与"unsafe"的特性

两者的枚举(enums)有一定的不同,Java的更加面向对象

Java的参数只能传值,没有类似于C#的ref 和out 传递引用。(注:Java 传递对象只是传递对象引用的copy)

Java 没有partial types

C# 的interface 不能定义字段

Java 没有unsigned 的整形

Java 没有类型与nullable 的value types

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,767评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,967评论 19 139
  • 对象的创建与销毁 Item 1: 使用static工厂方法,而不是构造函数创建对象:仅仅是创建对象的方法,并非Fa...
    孙小磊阅读 2,031评论 0 3
  • “小白菜君”,一个藏在我心底的名字,不是不愿意提起,只是害怕回忆。我不知道他于我而言是怎样的存在:我的高中同学,却...
    狸窝小姐阅读 322评论 0 0
  • 数年前的散文手稿被我翻出来了,当时为了校报刊首语写了一个系列的连载散文。 再次读起来却发现自己笔力那么生涩,词语的...
    残阳物语阅读 1,185评论 21 34