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