亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#基礎語法:結構和類區別詳解

2020-01-24 01:41:41
字體:
來源:轉載
供稿:網友

結構和類很相似,也可以包含數據成員和函數成員,但是與類不同,結構是一種值類型,(我們可以理解為一種特殊的值類型所以不存在繼承的問題)為其分配數據不需要從托管堆中分配存儲器。結構類型的變量直接包含了該結構的數據,而類類型的變量所包含的只是對相應對象的一個引用。

 下面總結一下結構和類的不同:

1.結構是值類型,對結構類型的變量賦值將創建所賦值的一個副本。
2.結構實例的默認值不是null,而是具有默認值的初始值。
3.在結構和類中this的意義不一樣。
4.結構不支持繼承(所以結構成員的聲明可訪問性不能是protected,protected internal,結構中的函數成員不能是abstract 或者virtual,所以在結構中override修飾符只適用于重寫從System.ValueType繼承的方法)但是可以實現接口。
5.在結構中實例字段聲明中不能含有變量的初始值設定項
6.在結構中不能聲明無參數的實例構造函數。
7.在結構中不能聲明析構函數。

測試區別特性代碼:
 

using System;namespace StructAndClass{  struct SPoint  {    public int x, y;    public SPoint(int x, int y)    {      this.x = x;      this.y = y;    }  }  class CPoint    {      public int x, y;      public CPoint(int x, int y)      {        this.x = x;        this.y = y;      }    }  class Test  {    public static void Main()    {      SPoint sp1 = new SPoint(2, 5);      Console.WriteLine("結構/sp1初始值:");      Console.WriteLine("sp1.x={0}", sp1.x);      SPoint sp2 = sp1;      Console.WriteLine("sp1=sp2后:");      Console.WriteLine("sp1.x={0}");      Console.WriteLine("sp1.x={0}", sp1.x);      Console.WriteLine("sp2.x={0}", sp2.x);      sp1.x = 5;      Console.WriteLine("再次改變sp1的值后:");      Console.WriteLine("sp1.x={0}", sp1.x);      Console.WriteLine("sp2.x={0}", sp2.x);      Console.WriteLine("============================");      CPoint cp1 = new CPoint(2,5);      Console.WriteLine("類/cp1初始值:");      Console.WriteLine("cp1.x={0}", cp1.x);      CPoint cp2 = cp1;      Console.WriteLine("cp1=cp2后:");      Console.WriteLine("cp1.x={0}", cp1.x);      Console.WriteLine("cp2.x={0}", cp2.x);      cp1.x = 5;      Console.WriteLine("再次改變cp1的值后:");      Console.WriteLine("cp1.x={0}", cp1.x);      Console.WriteLine("cp2.x={0}", cp2.x);      Console.ReadKey();    }  }}


對于結構,即使沒有new運算符聲明的結構變量也是有效的,結構雖然不能聲明無參數的實力構造函數,但是它其實隱式的包含了一個無參數的構造函數:而且在結構的所有字段沒有明確賦值之前,不能調用結構的實例函數成員。在結構的構造函數中應該給所有的字段賦值。例如:
 

struct DC  {    public int x, y;    public int X    {      set      {        x = value;      }      get      {        return x;      }    }    public int Y    {      set      {        y = value;      }      get      {        return y;      }    }    public DC(int x,int y)    {      this.x = x;      this.y = y;    }  }  struct RDC  {    public int x, y;    public int X    {      set      {        x = value;      }      get      {        return x;      }    }    public int Y    {      set      {        y = value;      }      get      {        return y;      }    }    public RDC(int x, int y)    {      this.x = x;      this.y = y;    }  }  class Test  {    public static void Main()    {      DC dc=new DC();      dc.x = 3;      dc.y = 5;      Console.WriteLine("已經對x,y初始化后:");      Console.WriteLine("此時可以訪問和修改dc.X={0}的值",dc.X);      Console.WriteLine("我在這里創建了一個DC的復制結構RDC/n并且不對x,y初始化就會報錯");      RDC rdc;       rdc.y = 5;//可以編譯通過       rdc.X = 3;//這里就會出錯,不能編譯通過      Console.WriteLine("=======test over================");     }  } 

在結構的實例構造函數內,this 相當于一個結構類型的 out 參數,(必須在內部對它明確賦值)而在結構的實例函數成員內,this 相當于一個結構類型的 ref 參數。在這兩種情況下,this 本身相當于一個變量,因而有可能對該函數成員調用所涉及的整個結構進行修改(如對 this 賦值,或者將 this 作為 ref 或 out 參數傳遞)。例如:(引用上面的例子)

 

struct DC  {    public int x, y;    public int X    {      set      {        x = value;      }      get      {        return x;      }    }    public int Y    {      set      {        y = value;      }      get      {        return y;      }    }    public DC(int x,int y)    {      X= x;//這里就是錯的      Y = y;//會提示沒有給this對象的所有字段賦值    }  }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
伊人久久久久久久久久久| 欧美亚洲国产另类| 日韩av三级在线观看| 亚洲欧美日韩中文在线制服| www.欧美免费| 日韩av电影在线播放| 中文字幕亚洲欧美日韩高清| 中文字幕av一区| 亚洲精品永久免费| 美女av一区二区三区| 亚洲激情免费观看| 欧美精品免费在线| 综合网中文字幕| 日韩久久精品电影| 97在线看免费观看视频在线观看| 一区二区三区视频在线| 日韩欧美极品在线观看| 国内精品久久久久久中文字幕| 日韩精品欧美激情| 国产精品白嫩初高中害羞小美女| 国产成人鲁鲁免费视频a| 亚洲色图五月天| 尤物yw午夜国产精品视频明星| 成人精品aaaa网站| 欧美极品少妇xxxxⅹ免费视频| 狠狠躁夜夜躁人人爽天天天天97| 国产精品久久久久免费a∨| 日韩精品欧美国产精品忘忧草| 久久综合网hezyo| 亚洲天堂免费观看| 精品免费在线视频| 亚洲欧美制服综合另类| 久久视频国产精品免费视频在线| 日韩久久精品电影| 亚洲第一综合天堂另类专| 最近2019年中文视频免费在线观看| 国产精品久久久久久久久久久新郎| 国内偷自视频区视频综合| 黑人巨大精品欧美一区二区免费| 欧美日韩一区二区免费视频| 国产成人av网| 97婷婷涩涩精品一区| 亚洲在线观看视频| 精品综合久久久久久97| 欧洲日本亚洲国产区| 姬川优奈aav一区二区| 色婷婷综合成人| 欧美一级片免费在线| 亚洲www视频| 久久99热这里只有精品国产| 成人激情视频免费在线| 欧美激情第一页xxx| 日韩不卡在线观看| 亚洲香蕉成人av网站在线观看| 色777狠狠综合秋免鲁丝| 日韩电影中文字幕在线观看| 国产精品黄色影片导航在线观看| 久久久久女教师免费一区| 亚洲无限乱码一二三四麻| 久久久国产一区| 日本精品免费观看| 欧美精品一本久久男人的天堂| 亚州国产精品久久久| 色婷婷**av毛片一区| 热久久免费视频精品| 成人黄在线观看| 中文字幕欧美精品在线| 亚洲成人激情视频| 亚洲最大在线视频| 最近2019中文字幕大全第二页| 国产精品一区专区欧美日韩| 欧美高清视频免费观看| 亚洲精品国精品久久99热| 日韩在线视频网站| 国产亚洲视频中文字幕视频| 国产欧美 在线欧美| 亚洲欧美精品伊人久久| 国产精品久久久久久久久久久新郎| 成人午夜在线视频一区| 不卡毛片在线看| 亚洲精品美女视频| 国产成人在线一区二区| 日韩电影视频免费| 午夜免费日韩视频| 国产成人精品久久二区二区| 91社区国产高清| 欧美极品少妇与黑人| 久久久久久国产精品三级玉女聊斋| 日韩av免费在线观看| 欧美另类在线观看| 理论片在线不卡免费观看| 亚洲午夜性刺激影院| 日韩在线不卡视频| 国产精品女人久久久久久| 精品久久中文字幕| 久久91精品国产91久久久| 欧美日韩国产一区在线| 欧美壮男野外gaytube| 成人午夜在线视频一区| 欧美日本高清一区| 中文字幕一区电影| 国产亚洲精品久久久久动| 亚洲国产精品久久| 久久亚洲欧美日韩精品专区| 国产视频观看一区| 精品国内自产拍在线观看| 亚洲欧美日本精品| 91在线视频成人| 九九久久久久久久久激情| 欧美午夜精品久久久久久人妖| 亚洲资源在线看| 日韩在线免费av| 欧美日韩国产区| 欧美黄色片在线观看| 亚洲美女喷白浆| 97免费中文视频在线观看| 日韩av片电影专区| 国产日本欧美一区二区三区| 日韩成人在线播放| 精品福利在线观看| 最近的2019中文字幕免费一页| 2019日本中文字幕| 亚洲四色影视在线观看| 91在线无精精品一区二区| 浅井舞香一区二区| 伊人精品在线观看| 亚洲国产成人爱av在线播放| 亚洲图片在区色| 国产亚洲欧美日韩一区二区| 国产精品毛片a∨一区二区三区|国| 九九热精品视频在线播放| 丁香五六月婷婷久久激情| 成人网址在线观看| 欧美在线视频网| 精品国产老师黑色丝袜高跟鞋| 92版电视剧仙鹤神针在线观看| 精品国产区一区二区三区在线观看| 91探花福利精品国产自产在线| 久久人人爽人人爽人人片av高请| 97视频免费在线看| 国产在线一区二区三区| 91网站在线免费观看| 日产精品久久久一区二区福利| 国产精品96久久久久久又黄又硬| 亚洲国产中文字幕在线观看| 久久精品视频99| 成人国产精品一区二区| 狠狠综合久久av一区二区小说| www国产亚洲精品久久网站| 最近2019年好看中文字幕视频| 国产噜噜噜噜久久久久久久久| 亚洲成av人影院在线观看| 中文字幕免费精品一区高清| 中文字幕一精品亚洲无线一区| 91久久嫩草影院一区二区| 精品久久久久久中文字幕| 日本精品久久电影| 黄网动漫久久久| 中文字幕欧美精品在线| 欧美黑人极品猛少妇色xxxxx| 精品精品国产国产自在线| 亚洲福利小视频| 最近更新的2019中文字幕| 18一19gay欧美视频网站|