我只想澄清一件事。这不是哪个更好的问题,这部分我留给别人讨论。我不在乎。 我在面试时被问到过这个问题,我想多了解一点可能会有用。

以下是我能想到的:

Java is "platform independent". Well nowadays you could say there is the Mono project so C# could be considered too but I believe it is a bit exaggerating. Why? Well, when a new release of Java is done it is simultaneously available on all platforms it supports, on the other hand how many features of C# 3.0 are still missing in the Mono implementation? Or is it really CLR vs. JRE that we should compare here? Java doesn't support events and delegates. As far as I know. In Java all methods are virtual Development tools: I believe there isn't such a tool yet as Visual Studio. Especially if you've worked with team editions you'll know what I mean.

请补充其他你认为相关的。

更新: 我突然想到,Java在类、方法等上没有自定义属性。真的是这样吗?


当前回答

另一个很好的资源是http://www.javacamp.org/javavscsharp/ 本网站列举了许多例子,说明了这两种编程语言之间的几乎所有差异。

关于属性,Java有注释,它的工作方式几乎相同。

其他回答

另一个很好的资源是http://www.javacamp.org/javavscsharp/ 本网站列举了许多例子,说明了这两种编程语言之间的几乎所有差异。

关于属性,Java有注释,它的工作方式几乎相同。

请通过下面给出的链接 msdn.microsoft.com/en-us/library/ms836794.aspx 它涵盖了c#和java之间的相似点和不同点

c#在Java中不存在的特性 c#包含了更多的基本类型和捕获算术异常的功能。

•在Java上提供了大量方便的表示法,其中许多,例如操作符重载和用户定义的强制类型转换,对于大型c++程序员社区来说已经很熟悉了。

事件处理是“一等公民”——它是语言本身的一部分。

•允许定义“struct”,它类似于类,但可以在堆栈上分配(不像c#和Java中的类实例)。

c#实现属性作为语言语法的一部分。

c#允许switch语句操作字符串。

c#允许匿名方法提供闭包功能。

c#允许迭代器通过函数风格的yield关键字使用协同例程。

c#支持输出参数,帮助返回多个值,这是c++和SQL共享的特性。

c#具有别名命名空间的能力。

c#有“显式成员实现”,它允许一个类具体实现接口的方法,与它自己的类方法分开。这也允许它实现两个恰好具有相同名称的方法的不同接口。接口的方法不需要是公共的;它们只能通过该接口访问。

c#提供了与COM的集成。

•遵循C和c++的例子,c#允许通过引用调用原语和引用类型。

Java的特性在c#中不存在

Java的strictfp关键字保证了浮点运算的结果在不同平台上保持相同。

Java支持检查异常,以更好地执行错误捕获和处理。

c#具有自动属性,这非常方便,它们也有助于保持你的代码更简洁,至少当你的getter和setter中没有自定义逻辑时是这样。

以下是Dare Obasanjo关于c#和Java之间差异的深度参考。在两者之间切换时,我总是会参考这篇文章。

http://www.25hoursaday.com/CsharpVsJava.html