c# 結構的使用


   類的定義的是引用類型,重點在堆上創建,有的時候類只包含極少的數據,因為管理堆而造成的開銷是很大的。這時候更好的做法就是將類型定義成結構。結構是值類型,在棧上存儲,能有效的減小內存管理的開銷。c#基元類型在Microsoft.NET Framework中對應的類型,string和object類型是類而不是結構。

 

一、聲明結構

  聲明結構要以struct關鍵字開頭,后面跟上類型名稱,最后是大括號中的結構主體。

  例如下面代碼,首先申請一個私有的abc三個變量,使用Variable方法設置變量值,分別使用三個Out方法返回值。

struct Variable
{
    private  int 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;
    }
}
namespace t

  注意:許多常用的操作符不能自動應用於自定義結構類型,例如:==和!=操作符就不能在自定義的結構體變量。但可以使用所有結構都公開的Equals()方法來比較,還可以作為自己的結構類型顯示聲明並實踐操作符。如果一個概念的中點在於值而並不是功能,就可以使用結構來實現。

二、結構和類的區別

  1、不能為結構聲明一個默認構造器,就是指的是無參數的構造器。應為編譯器始終會自動生成一個,但是在類中,只有在沒有自己寫構造器的時候,編譯器才會自動生成默認構造器,另外編譯器為結構生成的默認構造的總是將字段設置為0、false或者null,這個和類是一樣的。

  如果不想使用這些默認值,可以像上面的代碼一樣構建一個自己構造的有參數的構造器。但是需要做到的是吧所有的變量都要初始化,因為編譯器通過自己創建的構造器來初始化變量。

  2、類的實例可以在聲明時初始化,但是結構是不允許的。如果初始化會在編譯時提示,結構中不能有實例字段初始值設定項。

三、結構的使用

  這個位置,假如使用默認的構造器的話是不用使用,new 后面的來初始化值的。也可以在方法中直接寫。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM