跳到主要内容

C# vs Java

· 阅读需 1 分钟

Java 和 C# 真是有非常微妙的差异。

C# 到 Java

前段时间因为要写 mod,又开始写 Java。从 C# 到 Java 的感受,就是那些语法糖全没了,比如 new() 这种,搞个异步就得用 Future<> 之类,代码风格也不太适应。还有就是Java 的一些历史包袱,导致一些地方不如 C# 那么简洁(比如 List.of() 这种东西)。

Java 到 C#

写了两周 Java,今天写回 C#,又感到不适应。首先是编辑器的不适应。VS 是远远没有IDEA精致好用的。就比如 IDEA 提示“可将字段设为readonly”,光标移过去就可以点“设为readonly”,VS 不知道为什么就没有。VS 的自动补全有时候会比较烦人,本来想缩进,按一下 tab 给我补全出来一坨。

其次就是语法不习惯。比如 C# 有属性,Java 没有,只能写 getter/setter。虽然写getter/setter有点烦人,但是它也强迫你尽量封装,不要暴露太多细节。而c#有了属性,感觉就少了点“限制”。还有 C# 允许运算符重载,有时候就会有点懵。这就是所谓设计哲学的差异吧。代码风格也是,当时入门 C# 就搞不懂为什么 C# 的方法要用大驼峰,非得跟 Java 和其他语言对着干似的。


总之感觉 Java 虽然历史包袱有点沉,但是设计似乎比较优雅;C# 固然简洁,但也有点接近 C++,有种奇怪的语法丰富但是容易写成史山的感觉。