在結構體與類中的建構函式大致的作用相同,但同時也存在不少的區別,而且這些區別相當重要。 一、先看類中的建構函式/*
* Created by SharpDevelop.
* User: noo
* Date: 2009-8-26
* Time: 12:30
*
* 類的建構函式。
* (1)當類中沒有寫建構函式時,執行個體化類的時候會預設調用父類System.Object的無參建構函式。
* (2)當類中唯寫了帶參的建構函式時,執行個體化類的時候只能調用這個重載的建構函式,而繼續調用無參的建構函式會提示錯誤。
*/
using System ;
class constructA
{
public void output()
{
Console.WriteLine ("success");
}
}
class constructB
{
public constructB(int a)
{
Console.WriteLine (a);
}
public void output()
{
Console.WriteLine ("success");
}
}
class test
{
static void Main()
{
constructA cA=new constructA ();
cA.output();
// constructB cB=new constructB ();//調用錯誤,“constructB”方法沒有採用“0”個參數的重載
// cB.output ();
constructB cB=new constructB (5);
cB.output ();
}
}
二、接著看結構體中的建構函式/*
* Created by SharpDevelop.
* User: noo
* Date: 2009-8-26
* Time: 12:44
*
* 結構體的建構函式
* (1)結構體中不能寫無參的建構函式,只能寫帶參的建構函式,這同類的建構函式不一樣。
* (2)在結構體中只有帶參的建構函式時,可以調用無參的建構函式來執行個體化結構體,這個同類也不一樣。
*
*/
using System ;
struct constructC
{
// constructC()//結構不能包含顯式的無參數建構函式,這是結構體預設的建構函式,與類不同,這個不能重寫。
// {
// Console.WriteLine ("fail");
// }
public void output()
{
Console.WriteLine ("success");
}
}
struct constructD
{
public constructD(int a)//這裡只可以重載結構體的帶參的建構函式
{
Console.WriteLine (a);
}
public void output()
{
Console.WriteLine ("success");
}
}
class test
{
static void Main()
{
constructC cc=new constructC ();//調用結構體預設的建構函式
cc.output ();
constructD cd=new constructD ();//同類不一樣,這種執行個體化的方式也是對的。
cd.output ();
constructD cd2=new constructD (5);//調用結構體帶參的建構函式
}
}
通過上面的比較,相信你已經能掌握結構體與類中的建構函式的異同了。