C# 中常见的比较(完善中)

  • struct 与 class 的异同
  1. struct 是值类型,class是引用类型
  2. struct 间没有继承,class 间有继承
  3. struct不能显式声明无参数构造函数,即使定义了有参数构造函数,还是存在默认的无参数构造函数。而class只要显式声明了构造函数就不存在默认的。
  4. struct 允许不用 new ,但此种情况下结构体内变量将没有被初始。class 构造实例对象时则一定需要用 new
  5. struct 中只有static 和 const 修饰的变量允许声明时被初始化,而 class 则无此限制。
  6. struct 和 class 都允许寄承接口
  7. struct 和 class 都允许使用访问修饰符
  • C#、C++、Java 的异同
  1. 平台无关性。C#和Java是平台无关性,而C++不是
  2. 垃圾回收机制。C#和Java有自动垃圾回收机制,而C++需要析构函数析构对象
  3. 指针。C++完全支持,C#在unsafe代码下支持,Java不支持
  4. 继承、接口。C++支持多重继承,C#和Java支持单重继承,但可多重继承接口
  5. 强类型。C#和Java是强类型化的,而C++不是,如宏、函数指针
  6. 面向对象支持。
  • abstract (抽象类) 和 interface (接口) 的异同

        对于这两者,先看定义:

        抽象类是不能被实例化的类,抽象类可以包含抽象方法,除此之外和一般类基本相同。抽象方法只能声明于抽象类中,且不能有实现,继承抽象类的子类须实现所有的抽象方法。

        接口是引用类型的,只能包含方法、属性、索引器和事件的签名,方法的实现是在实现接口的类中完成的

它们的相似之处:

  1. 不能被实例化
  2. 包含未实现的方法声明
  3. 继承。类和接口都可以继承接口,抽象类允许继承或被继承
  4. 派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员)

它们的区别:

  1. 类是对对象的抽象,可以把抽象类理解为把类当作对象,抽象成的类叫做抽象类.而接口只是一个行为的规范或规定
  2. 接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法
  3. 接口可以用于支持回调,而继承并不具备这个特点
  4. 抽象类不能被密封,即不允许使用关键字sealed定义成不被继承的类
  5. 抽象类实现的具体方法默认为虚的,但实现接口的类中的接口方法却默认为非虚的,当然您也可以声明为虚的

它们的用法:

  1. 如果预计要创建组件的多个版本,则创建抽象类。抽象类提供简单的方法来控制组件版本。
  2. 如果创建的功能将在大范围的全异对象间使用,则使用接口。如果要设计小而简练的功能块,则使用接口
  3. 如果要设计大的功能单元,则使用抽象类.如果要在组件的所有实现间提供通用的已实现功能,则使用抽象类。
  4. 抽象类主要用于关系密切的对象;而接口适合为不相关的类提供通用功能。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值