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

我只想澄清一件事。 这不是一个更好的问题,我留给其他人讨论。 我不关心它。 我在工作面试中被问及这个问题,我认为了解更多一点可能会有帮助。

这些是我可以想到的:

  • Java是“独立于平台”的。 那么现在你可以说有Mono项目,所以C#可以被认为是太过了,但我认为它有点夸张。 为什么? 那么,当一个新的Java版本完成时,它可以在它支持的所有平台上同时使用,另一方面,Mono实现中仍然缺少C#3.0的多少特性? 或者是我们应该在这里比较一下CLR还是JRE呢?
  • Java不支持事件和委托。 我所知道的。
  • 在Java中,所有方法都是虚拟的
  • 开发工具:我相信目前还没有像Visual Studio这样的工具。 特别是如果你使用团队版本,你就会明白我的意思。
  • 请添加您认为相关的其他人。

    更新:刚刚弹出我的想法,Java没有像类,方法等自定义属性的东西或者呢?


    比较Java 7和C#3

    (这里没有提到Java 7的一些特性,但是已经删除了所有版本的C#over Java 1-6中的using语句优势。)

    并非所有的摘要都是正确的:

  • 在Java中,方法默认是虚拟的,但你可以使它们最终。 (在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没有静态类(它没有任何实例构造函数,也不能用于变量,参数等)
  • Java没有与C#3.0匿名类型等效的任何东西
  • Java没有隐式类型化的局部变量
  • Java没有扩展方法
  • Java没有对象和集合初始值表达式
  • 访问修饰符有些不同 - 在Java中(目前)没有组件的直接等价物,因此不知道“内部”可见性; 在C#中,没有等价于Java中的“默认”可见性,它考虑了命名空间(和继承)
  • Java和C#中初始化的顺序略有不同(C#在链接调用基类型构造函数之前执行变量初始化)
  • Java没有属性作为语言的一部分; 他们是get / set /方法的约定
  • Java没有相当于“不安全”的代码
  • Interop在C#(和.NET中)中比Java的JNI更容易
  • Java和C#有一些不同的枚举想法。 Java的更加面向对象。
  • Java没有预处理器指令(#define,#if等在C#中)。
  • Java没有C#的refout参数传递参数的等价物
  • Java没有部分类型的等价物
  • C#接口不能声明字段
  • Java没有无符号整数类型
  • Java对小数类型没有语言支持。 (java.math.BigDecimal提供了类似System.Decimal的东西 - 有区别 - 但没有语言支持)
  • Java没有等价的可空值类型
  • Java中的拳击使用预定义(但“普通”)引用类型,并对它们进行特定操作。 C#和.NET中的拳击是一个更透明的事情,CLR为任何值类型创建了一个引用类型。
  • 这并非详尽无遗,但它涵盖了我能想到的所有事情。


    以下是Dare Obasanjo对C#和Java之间差异的深入参考。 在两者之间切换时,我总是发现自己指的是这篇文章。

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


    C#具有非常方便的自动属性,它们也有助于保持代码更清洁,至少在您的getter和setter中没有自定义逻辑时。

    链接地址: http://www.djcxy.com/p/84517.html

    上一篇: What are major differences between C# and Java?

    下一篇: Switch Statement and Strings