C#.net中类与结构的区别[1]
一.类与结构的示例比较
结构示例
public struct Person { string Name; int height; int weight public bool overWeight() { //implement something } } 类示例 public class TestTime { int hours; int minutes; int seconds; public void passtime() { //implementation of behavior } }调用过程
public class Test { public static ovid Main { Person Myperson=new Person //声明结构 TestTime Mytime=New TestTime //声明类 } }从上面的例子中我们可以看到 类的声明和结构的声明非常类似 只是限定符后面是 struct 还是 class 的区别 而且使用时 定义新的结构和定义新的类的方法也非常类似 那么类和结构的具体区别是什么呢?
二 类与结构的差别
值类型与引用类型
结构是值类型 值类型在堆栈上分配地址 所有的基类型都是结构类型 例如 int 对应System int 结构 string 对应 system string 结构 通过使用结构可以创建更多的值类型
类是引用类型 引用类型在堆上分配地弊物址
堆栈的执行效率要比堆的执行效率高 可是堆栈的资源有限 不适合处樱卜码理大的逻辑复杂的对象 所以结构处理作为基类型对待的小对象 而类处理某个商业逻辑
因为结构是值类型所以结构之间的赋值可以创建新的结构 而类是引用类型 类之间的赋值只是复制引用
注
虽然结构与类的类型不一样 可是他们的基类型都是对象(object) c#中所有类型的基类型都是object 虽然结构的初始化也使用了New 操作符可是结构对象依然分配在堆栈脊哪上而不是堆上 如果不使用 新建 (new) 那么在初始化所有字段之前 字段将保持未赋值状态 且对象不可用
lishixinzhi/Article/program/net/201311/15075