栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

比较Java 7和C#3

(此处未提及Java 7的某些功能,但

using
已删除了所有C#版本相对于Java 1-6 的声明优势。)

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

  • 在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 / is方法的约定
  • Java没有等效的“不安全”代码
  • 与Java的JNI相比,C#(通常是.NET)中的Interop更容易
  • Java和C#的枚举概念有些不同。Java更加面向对象。
  • Java没有预处理程序指令(在C#中为#define,#if等)。
  • Java有没有对应的S C#“
    ref
    ,并
    out
    通过引用传递参数
  • Java没有等效的部分类型
  • C#接口无法声明字段
  • Java没有无符号整数类型
  • Java不支持十进制类型的 语言 。(java.math.BigDecimal提供了 类似 System.Decimal的功能,但有所不同,但是没有语言支持)
  • Java没有等效的可空值类型
  • Java中的装箱使用预定义(但为“常规”)引用类型,并对它们进行特定操作。C#和.NET中的装箱是一个更透明的事情,对于任何值类型,CLR都会为装箱创建一个引用类型。

这并不详尽,但涵盖了我能想到的所有内容。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/430415.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号