結構類型、結構函數和構造函數


         在初學C#的時候,有三個概念可能會容易搞混——結構類型、結構函數、構造函數。

         結構類型是由幾個數據組成的數據結構,這些數據可能有不同的的類型。結構就是把這些不同類型的數據組合在一起,形成由用戶自定義變量類型的數據,以方便用戶使用。結構使用struct關鍵字來定義,語法如下:

         struct <typeName>

         {

                   <memberDeclarations>

         }

<memberDeclarations>部分包含變量的定義(稱爲結構的數據成員),與聲明一個普通變量的格式一樣。如果要讓外界訪問結構的數據成員,可以在聲明變量成員的時候加上訪問修飾符public。如下:

         structStudent

         {

                   publicstring name;                                                        

                   publicint age;

         }

定義好結構之後,我們就可以定義新類型的變量,來使用該結構,並且使用“.”字符訪問這個組合變量中的數據成員。

         Studentstu;

         stu.name= “Jim”;

         stu.age= 20;

 

         結構函數是在結構類型的基礎上,讓結構發揮更多的作用,而不僅僅只是在一個地方存儲多個數據元素。結構可以同時包含有函數和數據,這就是結構函數。

         structStudent

         {

                   publicstring name;                                                        

                   publicint age;

                   publicstring SayHi()

                   {

                            Return“Hello,Everyone!My Name is ”+name+”, I’m ”+age;

                   }

         }

在外面,我們就可以通過stu.SayHi()的方法來調用這個函數。我們把把合適的函數添加到結構類型中,就可以集中處理常見的任務,用於簡化其它操作的過程。在上面的Student結構中,name和age可以被看作全局成員,SayHi()函數可以直接訪問它們。結構是值類型。

                                                                                                                                                

         構造函數與結構又是截然不同的兩個概念。當我們在定義一個類時,如果沒有顯式的指定,系統會給這個類賦予一個默認的無參構造函數,通過這個構造函數,我們就可以新建這個類的對象。這個構造函數與包含它的類同名,有訪問修飾符,但沒有void。

         classStudent

         {

                   publicStudent()

                   {

                   }

         }

當訪問修飾符爲public時,允許在類的外面使用new關鍵字來創建該類的實例。當訪問修飾符爲private時,不可以使用new關鍵字來創建對象,這種用法一般用於返回該類的唯一實例。我們還可以給類添加非默認的構造函數,這些構造函數都需要參數。

         publicclass Student

         {

                   publicstring _name;

                   publicint _age;

                   publicStudent()

                   {

                   }

                   publicStudent(string name,int age)

                   {

                            _name= name;

                            _age= age;

                   }

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章