国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C# > 正文

C#中的靜態(tài)成員、靜態(tài)方法、靜態(tài)類介紹

2020-01-24 01:13:44
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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"; }}

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 博野县| 郎溪县| 罗山县| 鄂托克前旗| 始兴县| 陵川县| 昆山市| 涿鹿县| 皋兰县| 团风县| 钦州市| 富锦市| 祁东县| 洛川县| 玛纳斯县| 江山市| 辽宁省| 铅山县| 汤原县| 阿荣旗| 广安市| 厦门市| 子洲县| 桓仁| 灯塔市| 宿州市| 磴口县| 兴文县| 灵石县| 太原市| 临城县| 林周县| 错那县| 繁昌县| 蓝山县| 新泰市| 赤城县| 将乐县| 马龙县| 临江市| 中西区|