c# 結構的使用
阿新 • • 發佈:2017-11-29
構建 col string object 初始化 內存 color tps microsoft
類的定義的是引用類型,重視在堆上創建,有的時候類只包含極少的數據,應為管理堆而造成的開銷是很大的。這時候更好的做法就是將類型定義成結構。結構是值類型,在棧上存儲,能有效的減小內存管理的開銷。c#基元類型在Microsoft.NET Framework中對應的類型,string和object類型是類而不是結構。
一、聲明結構
聲明結構要以struct關鍵字開頭,後面跟上類型名稱,最後是大括號中的結構主體。
例如下面代碼,首先申請一個私有的abc三個變量,使用Variable方法設置變量值,分別使用三個Out方法返回值。
struct Variable { privateint a, b, c;//設置為私有的變量 public Variable(int aa,int bb,int cc) { a = aa; b = bb; c = cc; } public int aOut() { return this.a; } public int bOut() { return this.b; } public int cOut() { return this.c; } } namespacet
註意:許多常用的操作符不能自動應用於自定義結構類型,例如:==和!=操作符就不能在自定義的結構體變量。但可以使用所有結構都公開的Equals()方法來比較,還可以作為自己的結構類型顯示聲明並實踐操作符。如果一個概念的中點在於值而並不是功能,就可以使用結構來實現。
二、結構和類的區別
1、不能為結構聲明一個默認構造器,就是指的是無參數的構造器。應為編譯器始終會自動生成一個,但是在類中,只有在沒有自己寫構造器的時候,編譯器才會自動生成默認構造器,另外編譯器為結構生成的默認構造的總是將字段設置為0、false或者null,這個和類是一樣的。
如果不想使用這些默認值,可以像上面的代碼一樣構建一個自己構造的有參數的構造器。但是需要做到的是吧所有的變量都要初始化,因為編譯器通過自己創建的構造器來初始化變量。
2、類的實例可以在聲明時初始化,但是結構是不允許的。如果初始化會在編譯時提示,結構中不能有實例字段初始值設定項。
三、結構的使用
這個位置,假如使用默認的構造器的話是不用使用,new 後面的來初始化值的。也可以在方法中直接寫。
c# 結構的使用