關(guān)于C# 類和對象詳情
一、對象的定義和創(chuàng)建
定義類對象的方法為:
類名 對象名;
類是引用類型的,當定義了對象之后,系統(tǒng)會為數(shù)據(jù)引用分配存儲空間,但是用來保存對象的實際數(shù)據(jù)的空間并沒有分配。
對象的創(chuàng)建
創(chuàng)建對象時需要使用new運算符。new運算符可以為任意指定類類型的實例分配并初始化內(nèi)存。
創(chuàng)建對象的語法形式如下: 對象名 = new類名();
代碼示例,對象的定義和創(chuàng)建:
class Program
{
static void Main(string[] args)
{
//對象的定義和創(chuàng)建
Test t = new Test();
//或者 先定義
Test t1;
// 使用時創(chuàng)建
t1 = new Test();
}
}
class Test
{
}
行對象的創(chuàng)建時,需要注意:
- new運算符后為要創(chuàng)建的對象所屬類的類名
- 類名后的圓括號不能省略
- 可以將對象的定義和創(chuàng)建合并在一起
二、、對象的初始化
C#中實現(xiàn)對象初始化的方式有兩種:
- 借助構(gòu)造函數(shù)或使用
- 對象初始化列表。
1. 借助構(gòu)造函數(shù)或使用
new運算表達式的圓括號中所帶參數(shù)并不是任意的,圓括號中是否支持參數(shù)、可以攜帶幾個參數(shù)是由對象所屬類的構(gòu)造函數(shù)形式?jīng)Q定的。
C#的類支持兩種構(gòu)造函數(shù):實例構(gòu)造函數(shù)和靜態(tài)構(gòu)造函數(shù)
實例構(gòu)造函數(shù)是實現(xiàn)初始化類實例所需操作的成員。
靜態(tài)構(gòu)造函數(shù)是一種用于在第一次加載類本身時實現(xiàn)其初始化所需操作的成員。
C#類的靜態(tài)構(gòu)造函數(shù)初始化類層次的項目。通常,靜態(tài)構(gòu)造函數(shù)初始化類的靜態(tài)字段。
類層次的項目初始化必須在任何靜態(tài)成員被引用之前,同時也必須在該類的所有對象創(chuàng)建之前。
2. 實例構(gòu)造函數(shù)
實例構(gòu)造函數(shù)是一個特殊的方法,它在創(chuàng)建類的每個新對象時執(zhí)行,用以初始化對象的狀態(tài)。
實例構(gòu)造函數(shù)應該聲明為public。
下面是實例構(gòu)造函數(shù)的一般定義形式:
// 無參構(gòu)造
public 類名()
{
函數(shù)體
}
// 帶參構(gòu)造
public 類名(參數(shù)列表)
{
函數(shù)體
}
定義實例構(gòu)造函數(shù)時需注意:
- 實例構(gòu)造函數(shù)可以帶有參數(shù),也可以不帶參數(shù),
- 實例構(gòu)造函數(shù)的參數(shù)設(shè)置決定了對象創(chuàng)建時
new運算表達式中圓括號中的參數(shù)格式; - 實例構(gòu)造函數(shù)可以重載。
其他說明:
- 當類的聲明中沒有顯式提供實例構(gòu)造函數(shù)時,編譯器會提供一個隱式的默認構(gòu)造函數(shù)。
- 默認構(gòu)造函數(shù)不帶參數(shù),并且方法體為空。
- 調(diào)用默認構(gòu)造函數(shù)實現(xiàn)對象創(chuàng)建時,
new運算表達式后的圓括號內(nèi)不能帶有參數(shù)。
3. 靜態(tài)構(gòu)造
靜態(tài)構(gòu)造函數(shù):
- C#類的靜態(tài)構(gòu)造函數(shù)初始化類層次的項目。
- 通常,靜態(tài)構(gòu)造函數(shù)初始化類的靜態(tài)字段。
- 類層次的項目初始化必須在任何靜態(tài)成員被引用之前,同時也必須在該類的所有對象創(chuàng)建之前。
使用靜態(tài)構(gòu)造函數(shù)時,需注意:
- 靜態(tài)構(gòu)造函數(shù)只有一個,不能重載,并且不能帶參數(shù);
- 靜態(tài)構(gòu)造函數(shù)不能有訪問修飾符,它由系統(tǒng)自動調(diào)用;
- 類的靜態(tài)構(gòu)造函數(shù)和實例構(gòu)造函數(shù)可以共存;
- 靜態(tài)構(gòu)造函數(shù)不能訪問類的實例成員。
代碼示例:
class Program
{
static void Main(string[] args)
{
Test t = new Test();
// 輸出: 0,0,1
Console.WriteLine(t.X + "," + t.Y + "," + Test.Z)
Test t1 = new Test(1, 2);
// 輸出: 1,2,2
Console.WriteLine(t1.X + "," + t1.Y + "," + Test.
Test t2 = new Test(3, 4);
// 輸出: 3,4,3
Console.WriteLine(t2.X + "," + t2.Y + "," + Test.
Console.ReadLine();
}
}
class Test
{
public int X = 0;
public int Y = 0;
public static int Z = 0;
// 無參構(gòu)造
public Test() { Z++; }
// 帶參構(gòu)造
public Test(int X, int Y)
{
this.X = X;
this.Y = Y;
Z++;
}
// 靜態(tài)構(gòu)造 -- 初始化Z值
static Test()
{
Z = 0;
}
}
三、對象的引用
對象成員的引用形式為:
對象名.實例成員名 // 或者 對象名.實例成員名(實參列表)
對象的運算同一類的兩個對象支持賦值、相等與不相等運算。如下所示:
Test t = new Test(); Test t1 = new Test(); // 輸出:false Console.WriteLine(t == t1); // 對象的賦值操作 t = t1; // 輸出:true --> 此時t,t1表示為同一對象 Console.WriteLine(t == t1);
對象之間除了可以進行比較,賦值操作之外。還可以至此is和as運算符,is和as運算符更多的應用于基類和派生類之間進行類型轉(zhuǎn)換,詳細說明在繼承處講解。
到此這篇關(guān)于關(guān)于C# 類和對象詳情的文章就介紹到這了,更多相關(guān)C# 類和對象內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#打包部署并把.net framework框架打到安裝包的方法步驟
打包c#程序時,有時需要添加.net framework組件到安裝包,本文就來介紹一下C#打包部署并把.net framework框架打到安裝包的方法步驟,具有一定的參考價值,感興趣的可以了解一下2023-10-10
C#實現(xiàn)圖片上傳(PC端和APP)保存及 跨域上傳說明
這篇文章主要介紹了C#實現(xiàn)圖片上傳(PC端和APP)保存及 跨域上傳說明的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-12-12

