Ene*_*nes 209 .net c# java clr
我只想澄清一件事.这不是一个更好的问题,我要留给其他人讨论.我不在乎.在我的求职面试中,我被问到这个问题,我认为学习更多内容可能会有所帮助.
这些是我能想到的:
请添加您认为相关的其他人.
更新:刚刚弹出我的想法,Java没有像类,方法等的自定义属性那样的东西.或者它呢?
Jon*_*eet 329
比较Java 7和C#3
(这里没有提到Java 7的一些功能,但是using
已经删除了所有版本的C#而不是Java 1-6 的语句优势.)
并非所有摘要都是正确的:
除此之外(以及您的摘要中已有的内容):
List<byte>
作为byte[]
支持它,而不是盒装字节数组.)ref
也out
不能通过引用传递参数这并非详尽无遗,但它涵盖了我能想到的一切.
Win*_*ith 24
以下是Dare Obasanjo对C#和Java之间差异的深入参考.在两者之间切换时,我总是发现自己指的是这篇文章.
http://www.25hoursaday.com/CsharpVsJava.html
小智 10
Java中缺少C#的特性•C#包含更多原始类型和捕获算术异常的功能.
•包含大量基于Java的符号方便,其中许多(例如运算符重载和用户定义的转换)已经为大型C++程序员社区所熟悉.
•事件处理是"一等公民" - 这是语言本身的一部分.
•允许定义"结构",它类似于类,但可以在堆栈上分配(与C#和Java中的类实例不同).
•C#将属性作为语言语法的一部分.
•C#允许switch语句对字符串进行操作.
•C#允许匿名方法提供闭包功能.
•C#允许通过函数式yield关键字使用协同例程的迭代器.
•C#支持输出参数,有助于返回多个值,C++和SQL共享的功能.
•C#具有别名空间的功能.
•C#具有"显式成员实现",它允许类专门实现接口的方法,与其自己的类方法分开.这允许它还实现两个碰巧具有相同名称的方法的不同接口.接口的方法不需要公开; 它们只能通过该界面访问.
•C#提供与COM的集成.
•遵循C和C++的示例,C#允许通过引用调用原始类型和引用类型.
C#中缺少Java的功能
•Java的strictfp关键字保证浮点运算的结果在不同平台上保持不变.
•Java支持已检查的异常,以便更好地实施错误捕获和处理.
另一个很好的资源是http://www.javacamp.org/javavscsharp/ 这个网站列举了许多例子,这些例子说明了这两种编程语言之间几乎所有的差异.
关于属性,Java具有注释,其工作方式几乎相同.
泛型:
使用Java泛型,实际上并没有获得.NET所带来的任何执行效率,因为当您在Java中编译泛型类时,编译器会删除type参数并在任何地方替换Object.例如,如果你有一个Foo<T>
类,那么java编译器会生成字节代码,就像它一样Foo<Object>
.这意味着必须在"背景"中进行转换以及装箱/拆箱.
我已经玩了一段时间的Java/C#,在我看来,语言层面的主要区别在于,如你所指出的那样,代表们.