请注意,这并不意味着是Java vs. C#参数。我是一位没有C#经验的Java程序员,出于好奇而问。
我在C#上做了一些阅读,似乎它比Java具有更多的功能。一些例子:
- 类型推断。
dynamic
关键词。- 代表们
- 可选参数。
- Lambda和LINQ (我实际上不知道它们是什么)。
- 属性。
但是,Java实际上没有C#所没有的任何功能。
我的问题是:为什么C#比Java具有更多的本机功能?为何Java多年来一直没有添加其中的某些内容,例如Properties或type Inference?Java语言设计人员是否采用更简单的方法?这是什么原因呢?
2
@Patrick-这是功能-还是实现细节?
—
皮特2014年
偏颇的答案:因为C#设计团队知道他们在做什么。更为合理的答案:C#是在了解Java失败的情况下设计的,并且没有教条式的“仅纯OO”(它们甚至没有完全实现)。这些功能的一半是从Lisp和Haskell批量导入的,这两种语言在Java 8之前一直坚定地受到Java的启发,而其他一些功能则由于Java的缺乏而变得更加明显。
—
Phoshi 2014年
因为C#后来出现了,最初是Java的公然盗版,然后有机会添加了所有值得增加的东西,而Java却受到非常严格的向后兼容性目标的阻碍。
—
Kilian Foth,2014年
@ Clockwork-Muse,但是C#具有两个运行时实现-CLR和Mono。也有Xamarin。我还没有听说过使用Java构建跨iOS / Android / WinPhone项目的单一解决方案。
—
2014年
@KilianFoth:实际上,C#最初是Delphi的精打细算,被重写为Java。微软甚至挖走了Delphi项目设计师,使其脱离Borland进行创建。
—
梅森惠勒