c#

位置:IT落伍者 >> c# >> 浏览文章

C#.net中类与结构的区别[2]


发布日期:2019年12月11日
 
C#.net中类与结构的区别[2]

.继承性

结构不能从另外一个结构或者类继承本身也不能被继承虽然结构没有明确的用sealed声明可是结构是隐式的sealed

完全可扩展的除非显示的声明sealed 否则类可以继承其他类和接口自身也能被继承

虽然结构不能被继承 可是结构能够继承接口方法和类继承接口一样

例如:结构实现接口

interface IImage

{

void Paint();

}

struct Picture : IImage

{

public void Paint()

{

// painting code goes here

}

private int x y z; // other struct members

}

.内部结构

结构

没有默认的构造函数但是可以添加构造函数

没有析构函数

没有 abstract 和 sealed(因为不能继承)

不能有protected 修饰符

可以不使用new 初始化

在结构中初始化实例字段是错误的

有默认的构造函数

有析构函数

可以使用 abstract 和 sealed

有protected 修饰符

必须使用new 初始化

三.如何选择结构还是类

讨论了结构与类的相同之处和差别之后下面讨论如何选择使用结构还是类

. 堆栈的空间有限对于大量的逻辑的对象创建类要比创建结构好一些

. 结构表示如点矩形和颜色这样的轻量对象例如如果声明一个含有 个点对象的数组则将为引用每个对象分配附加的内存在此情况下结构的成本较低

. 在表现抽象和多级别的对象层次时类是最好的选择

. 大多数情况下该类型只是一些数据时结构时最佳的选择

[] []

               

上一篇:C#编程三步走之一

下一篇:C#.net中类与结构的区别[1]