闂傚倸鍊峰ù鍥Υ閳ь剟鏌涚€n偅宕岄柡宀€鍠栭、娑樷堪閸愮偓姣夋俊鐐€戦崕濠氬箯閿燂拷 (0) +1 闂傚倷娴囧畷鍨叏瀹ュ拋鍚嬮柛鈩冾殢娴硷拷 (0) +1 闂傚倸鍊搁崐鎼併偑鐎涙ḿ顩查柣鎴f缁狀垶鏌ㄩ悤鍌涘 (0) +1
闂傚倸鍊峰ù鍥Υ閳ь剟鏌涚€n偅宕岄柡宀€鍠栭、娑樷堪閸愮偓姣夋俊鐐€戦崕鏌ュ垂閸ф钃熼柣鏃囥€€閸嬫挸鈽夊▍顓т簼閹便劑宕惰閺€鑺ャ亜閺囩偞顥為悗姘炬嫹闂傚倸鍊风粈渚€骞栭銈嗗仏妞ゆ劧绠戠壕鍧楁煕閹邦垼鍤嬮柤鏉挎健閺屾稑鈽夊▎鎰▏缂傚倷璁查弲鐘诲蓟閻旂⒈鏁嶆繝濠傚枤閺嗩厼顪冮妶鍐ㄥ姷闁瑰嚖鎷�>>

正在阅读:c#中结构与类的区别c#中结构与类的区别

2004-06-04 15:27 出处:PConline 作者:YAOTIEBING 责任编辑:linjixiong

目录

   类与结构的实例比较

   类与结构的差别

   如何选择结构还是类

一.类与结构的示例比较:

结构示例:

 

 



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 的区别,而且使用时,定义新的结构和定义新的类的方法也非常类似。那么类和结构的具体区别是什么呢?

二 .类与结构的差别

1. 值类型与引用类型

结构是值类型:值类型在堆栈上分配地址,所有的基类型都是结构类型,例如:int 对应System.int32 结构,string 对应 system.string 结构 ,通过使用结构可以创建更多的值类型

类是引用类型:引用类型在堆上分配地址

堆栈的执行效率要比堆的执行效率高,可是堆栈的资源有限,不适合处理大的逻辑复杂的对象。所以结构处理作为基类型对待的小对象,而类处理某个商业逻辑

因为结构是值类型所以结构之间的赋值可以创建新的结构,而类是引用类型,类之间的赋值只是复制引用

注:

1.虽然结构与类的类型不一样,可是他们的基类型都是对象(object),c#中所有类型的基类型都是object


2.虽然结构的初始化也使用了New 操作符可是结构对象依然分配在堆栈上而不是堆上,如果不使用“新建”(new),那么在初始化所有字段之前,字段将保持未赋值状态,且对象不可用

  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
}

 

  3.内部结构:

结构:

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

    没有析构函数

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

    不能有protected 修饰符

    可以不使用new 初始化

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

类:

 有默认的构造函数

 有析构函数

 可以使用 abstract 和 sealed

有protected 修饰符

必须使用new 初始化

三.如何选择结构还是类

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

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

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

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

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






察看评论详细内容 我要发表评论
作者笔名简短内容 发表时间
:

关注我们

最新资讯离线随时看 聊天吐槽赢奖品
闂傚倸鍊风粈浣虹礊婵犲倴缂氱憸鏃堛€侀弽顓炲耿婵$偟绮弫鐘绘⒑闁偛鑻晶鎾煙椤旀娼愰柟宄版嚇瀹曘劍绻濋崒娆愭▕濠电姷顣藉Σ鍛村磻閹捐绠柨鐕傛嫹闂傚倸鍊烽悞锕傚箖閸洖纾块柟鎯版绾剧粯绻涢幋娆忕仼闁哄嫨鍎甸幃姗€鎮欓弶鍨彑婵炲瓨绮嶇划鎾诲蓟濞戙埄鏁冮柨婵嗘椤︺儵姊洪崨濠冾棖闁瑰嚖鎷�