在初學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;
}
}