C#学习:结构

来源:互联网 发布:光伏产业链 知乎 编辑:程序博客网 时间:2024/04/29 22:38

结构:

1)          是值类型,不是引用类型。它们存储在堆栈中或存储为内联(如果他们是另一个对象的一部分)

2)          结构不支持继承  

A 其默认构造函数不允许替换,是隐式给出的无参构造函数,即使提供了其他带参数的构造函数,也是如此(不允许在字段定义时赋值,而是调用默认构造函数时赋值0)。

B  使用结构  可以指定字段如何在内存中布局(可参考MSDNStructLayout

但唯一的异常是:结构派生于类System.ValueType, System.ValueType派生于System.ObjectSystem.ValueType没有添加自己的新方法,但提供了Object的一些更适合值类型的重写方法。

C 结构的初始化方法

Dimensions Pt=new Dimensions();  //只能是无参构造函数

Pt.Length=3;

Pt.Width=6;

也可

Dimensions Pt   ;

Pt.Length=3;

Pt.Width=6;  //若是Dimensions是类,编译就会出错。因为Pt应包含一个未初始化的引用---不指向任何地方的一个地址,所以不能给其字段设置值。

但对于结构,变量声明实际上是为整个结构分配堆栈中的空间,所以就可以赋值了。但上面的代码没有初始化结构,所以下面的代码:

Dimensions Pt   ;

Double D=Pt.Length; //编译 初始化错误,使用了未初始化变量。

注意:把结构作为ref参数传递给方法,可以避免因复制数据带来的性能损失

 

D 结构的构造函数

 

原创粉丝点击