C#中的靜態(tài)成員、靜態(tài)方法、靜態(tài)類介紹
1.靜態(tài)成員、實(shí)例成員
1.1定義及說(shuō)明
數(shù)據(jù)成員:
靜態(tài)成員:靜態(tài)成員變量是和類相關(guān)聯(lián)的,可以作為類中"共"有的變量(是一個(gè)共性的表現(xiàn)),他不依賴特定對(duì)象的存在,訪問(wèn)的時(shí)候通過(guò)類名加點(diǎn)操作符加變量名來(lái)訪問(wèn).
實(shí)例成員:實(shí)例成員變量是和對(duì)象相關(guān)聯(lián)的,訪問(wèn)實(shí)例成員變量依賴于實(shí)例的存在.
函數(shù)成員:
靜態(tài)方法:靜態(tài)方法是不屬于特定對(duì)象的方法,靜態(tài)方法可以訪問(wèn)靜態(tài)成員變量和靜態(tài)方法;靜態(tài)方法不可以直接訪問(wèn)實(shí)例變量和實(shí)例方法,可以間接調(diào)用,首先要?jiǎng)?chuàng)建一個(gè)類的實(shí)例,然后通過(guò)這一特定對(duì)象來(lái)調(diào)用靜態(tài)方法;
實(shí)例方法:一個(gè)實(shí)例方法的執(zhí)行與特定對(duì)象關(guān)聯(lián),他的執(zhí)行需要一個(gè)對(duì)象存在。實(shí)例方法可以直接訪問(wèn)靜態(tài)變量和實(shí)例變量,當(dāng)多個(gè)實(shí)例對(duì)象存在時(shí),內(nèi)存中并不是存在美個(gè)特定的實(shí)例方法的拷貝,而是,相同類的所有對(duì)象都共享每個(gè)實(shí)例方法的一個(gè)拷貝(實(shí)例方法只占用“一套”空間)。
靜態(tài)方法和實(shí)例方法的訪問(wèn)權(quán)限表
靜態(tài)成員變量 | 靜態(tài)方法 | 實(shí)例成員變量 | 實(shí)例方法 | |
靜態(tài)方法 | 直接訪問(wèn) | 直接訪問(wèn) | 不可直接訪問(wèn) | 不可直接訪問(wèn) |
實(shí)例方法 | 直接訪問(wèn) | 直接訪問(wèn) | 直接訪問(wèn) | 直接訪問(wèn) |
總之:實(shí)例方法的存在必須要有對(duì)象實(shí)例的存在,如果對(duì)象實(shí)例不存在,則實(shí)例方法也就沒(méi)有調(diào)用它的主人。靜態(tài)方法的存在前提是類的存在,所以無(wú)需聲明和New對(duì)象。
1.2代碼演示
class Program { static void Main(string[] args) { Class1.CallObjectFunc();//靜態(tài)調(diào)用 Console.WriteLine(Environment.NewLine); Class1 tmpClass = new Class1();//實(shí)例調(diào)用 tmpClass.ObjectFunc(); Console.ReadKey(); } } class Class1 { static int Class_m = 9;//靜態(tài)成員 private int object_m = 8;//實(shí)例成員 public static void CallObjectFunc() { Console.WriteLine("------------靜態(tài)方法調(diào)用開(kāi)始:"); Class1 class1 = new Class1(); class1.ObjectFunc(); Console.WriteLine("object_m:" + class1.object_m.ToString()); Console.WriteLine("------------靜態(tài)方法調(diào)用結(jié)束:"); } public void ObjectFunc() { Console.WriteLine("實(shí)例方法調(diào)用開(kāi)始:"); Console.WriteLine("Class_m:" + Class_m.ToString()); Console.WriteLine("實(shí)例方法調(diào)用結(jié)束:"); } }
輸出結(jié)果:
2.靜態(tài)類
類可以聲明為 static 的,以指示它僅包含靜態(tài)成員。不能使用 new 關(guān)鍵字創(chuàng)建靜態(tài)類的實(shí)例。例如,創(chuàng)建一組不操作實(shí)例數(shù)據(jù)并且不與代碼中的特定對(duì)象關(guān)聯(lián)的方法是很常見(jiàn)的要求。您應(yīng)該使用靜態(tài)類來(lái)包含那些方法。
靜態(tài)類的主要功能如下:
它們僅包含靜態(tài)成員。----函數(shù)成員和變量都必須有static修飾
它們不能被實(shí)例化。
它們是密封的。-----------編譯器編譯時(shí)自動(dòng)生成sealed標(biāo)記
它們不能包含實(shí)例構(gòu)造函數(shù)。
因此創(chuàng)建靜態(tài)類與創(chuàng)建僅包含靜態(tài)成員和私有構(gòu)造函數(shù)的類大致一樣。私有構(gòu)造函數(shù)阻止類被實(shí)例化。
使用靜態(tài)類的優(yōu)點(diǎn)在于,編譯器能夠執(zhí)行檢查以確保不致偶然地添加實(shí)例成員。編譯器將保證不會(huì)創(chuàng)建此類的實(shí)利。
靜態(tài)類是密封的,因此不可被繼承。靜態(tài)類不能包含構(gòu)造函數(shù),但仍可聲明靜態(tài)構(gòu)造函數(shù)以分配初始值或設(shè)置某個(gè)靜態(tài)狀態(tài)。
靜態(tài)類:
static class CompanyInfo { public static string GetCompanyName() { return "CompanyName"; } public static string GetCompanyAddress() { return "CompanyAddress"; } }
上一篇:C#使用Process類調(diào)用外部exe程序
欄 目:C#教程
下一篇:C#進(jìn)階系列 WebApi身份認(rèn)證解決方案推薦:Basic基礎(chǔ)認(rèn)證
本文標(biāo)題:C#中的靜態(tài)成員、靜態(tài)方法、靜態(tài)類介紹
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/6626.html
您可能感興趣的文章
- 01-10C#中查找Dictionary中的重復(fù)值的方法
- 01-10C#將圖片存放到SQL SERVER數(shù)據(jù)庫(kù)中的方法
- 01-10關(guān)于nancy中的身份驗(yàn)證
- 01-10C#中的事務(wù)用法實(shí)例分析
- 01-10C#實(shí)現(xiàn)讀取DataSet數(shù)據(jù)并顯示在ListView控件中的方法
- 01-10C#中的正則表達(dá)式介紹
- 01-10C#開(kāi)發(fā)中的垃圾回收機(jī)制簡(jiǎn)析
- 01-10C#語(yǔ)言中的修飾符匯總
- 01-10C#中的 == 和equals()區(qū)別淺析
- 01-10C#通過(guò)正則表達(dá)式實(shí)現(xiàn)提取網(wǎng)頁(yè)中的圖片


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10C#通過(guò)反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁(yè)無(wú)法打開(kāi)的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10WinForm實(shí)現(xiàn)仿視頻播放器左下角滾動(dòng)新
- 01-10C#停止線程的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#通過(guò)重寫(xiě)Panel改變邊框顏色與寬度的
- 01-10C#實(shí)現(xiàn)讀取注冊(cè)表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10delphi制作wav文件的方法
- 04-02jquery與jsp,用jquery
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什