C#和Java之间的主要区别是什么?

问题:

我只想澄清一件事这不是一个更好的问题,那部分我会给别人讨论。我不在乎。
我在求职面试中被问到这个问题,我以为可能会更有用的。
这些是我可以想出来的:

  • Java是“独立平台”。那么现在你可以说有Mono项目,所以C#也可以考虑
    我相信这有点夸张。为什么?那么当Java的新版本完成后,它可以在它支持的所有平台上同时使用,另一方面在Mono实现中仍然缺少C#3.0的多少功能?或者真的CLRJRE我们应该在这里比较吗?
  • Java不支持事件和委托。我所知道的。
  • 在Java中所有的方法都是虚拟的
  • 开发工具:我相信还没有Visual Studio这样的工具。特别是如果你和团队版本一起工作,你会知道我的意思。

请添加您认为相关的其他人。
更新:
刚刚弹出我的想法,Java没有像类,方法等上的自定义属性的东西,还是这样?

回答:

 比较Java 7和C#3
(Java 7的某些功能在这里没有提及,但所有版本的C#与Java 1-6的using语句优点已被删除。)
并非所有的摘要都是正确的:

  • 在Java方法中是虚拟by default,但你可以使它们成为最终的。 (在C#中,默认情况下它们是密封的,但您可以将其虚拟化。)
  • 有许多Java的IDE,包括免费(例如Eclipse,Netbeans)和商业(例如IntelliJ IDEA)

除此之外(已经在你的摘要中):

  • 两者之间的泛型是完全不同的; Java泛型只是一个编译时的“技巧”(但是一个很有用的)。在C#和.NET中,泛型在执行时也被维护,并为价值类型和引用类型工作,保持适当的效率(例如,List<byte>作为byte[]支持它,而不是一个盒子字节数组。 )
  • C#没有检查异常
  • Java不允许创建用户定义的值类型
  • Java没有运算符和转换重载
  • Java没有迭代器块来简单地实现迭代器
  • Java没有什么像LINQ
  • 部分由于没有代理,Java没有任何类似匿名方法和lambda表达式的东西。匿名内部类通常填充这些角色,但是笨拙。
  • Java没有表达式树
  • C#没有匿名内部类
  • C#根本没有Java的内部类,实际上C#中的所有嵌套类都像Java的静态嵌套类
  • Java没有静态类(没有any实例构造函数,不能用于变量,参数等)
  • Java没有任何等同于C#3.0匿名类型
  • Java没有隐式类型的局部变量
  • Java没有扩展方法
  • Java没有对象和集合初始化程序表达式
  • 访问修饰符有些不同 – 在Java中(目前)没有直接等同于一个程序集,所以不了解“内部”可见性;在C#中没有相当于Java的“默认”可见性,它考虑到命名空间(和继承)
  • 在Java和C#中的初始化顺序是微乎其微的(C#在链接调用基类型的构造函数之前执行变量初始化器)
  • Java没有属性作为语言的一部分;它们是get / set / is方法的惯例
  • Java不具有相当于“不安全”的代码
  • C#(和.NET一般)中的Interop比Java的JNI更容易
  • Java和C#有一些不同的枚举的想法。 Java更加面向对象。
  • Java没有预处理指令(#define,#if等在C#中)。
  • Java没有等同于通过引用传递参数的C#的refout
  • Java没有等同于部分类型
  • C#接口无法声明字段
  • Java没有无符号整数类型
  • Java对于十进制类型没有language支持。 (java.math.BigDecimal提供了一些like System.Decimal – 具有差异 – 但是没有语言支持)
  • Java没有等价于可空值类型
  • Java中的Boxing使用预定义(但“正常”)引用类型,并对其进行特定操作。 C#和.NET中的Boxing是一个更加透明的事情,CLR为任何值类型创建了一个引用类型。

这不是详尽无遗的,但它涵盖了我可以想到的一切。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: What are major differences between C# and Java?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 6 = 3