程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#靜態static的用法實例剖析

C#靜態static的用法實例剖析

編輯:C#入門知識

C#靜態static的用法實例剖析。本站提示廣大學習愛好者:(C#靜態static的用法實例剖析)文章只能為提供參考,不一定能成為您想要的結果。以下是C#靜態static的用法實例剖析正文


本文實例講述了C#靜態static的用法,分享給年夜家供年夜家參考。詳細用法剖析以下:

1、靜態類

靜態類與非靜態類的主要差別在於靜態類不克不及實例化,也就是說,不克不及應用 new 症結字創立靜態類類型的變量。在聲明一個類時應用static症結字,具有兩個方面的意義:起首,它避免法式員寫代碼來實例化該靜態類;其次,它避免在類的外部聲明任何實例字段或辦法。

靜態類的重要特征:

1:僅包括靜態成員。

2:沒法實例化。

3:靜態類的實質,是一個籠統的密封類,所以不克不及被繼續,也不克不及被實例化。

4:不克不及包括實例結構函數。

5:假如一個類上面的一切成員,都須要被同享,那末可以把這個類界說為靜態類。

靜態類與公有結構函數差別:

1、公有結構器方法依然可以從類的外部對類停止實例化,而靜態類制止從任何處所實例化類,個中包含從類本身外部。

2、應用公有結構器的類中,是許可有實例成員的,編譯器不許可靜態類有任何實例成員。

3、應用靜態類的長處在於,編譯器可以或許履行檢討以確保不致有時地添加實例成員,編譯器將包管不會創立此 類的實例。

4、C#編譯器會主動把它標志為sealed。這個症結字將類指定為弗成擴大;換言之,不克不及從它派生出其他類。

2、靜態變量

1、經由過程static症結字潤飾,是屬於類,實例成員屬於對象,在這個類第一次加載的時刻,這個類上面的一切靜態成員會被加載。

2、靜態成員只被創立一次,所以靜態成員只要一份,實例成員有若干個對象,就有若干份。

3、類加載的時刻,一切的靜態成員就會被創立在“靜態存儲區”外面,一旦創立直到法式加入,才會被收受接管。

4、變量須要被同享的時刻,辦法須要被重復挪用的時刻,便可以把這些成員界說為靜態成員。

5、在靜態辦法中,不克不及直接挪用實例成員,由於靜態辦法被挪用的時刻,對象還有能夠不存在。

6、this/base 症結字在靜態辦法中不克不及應用,由於有能夠對象還不存在。

7、可以創立這個類的對象,制訂對象的成員在靜態辦法中操作。

8、在實例辦法中,可以挪用靜態成員,由於這個時刻靜態成員確定存在。

9、非靜態類可以包括靜態的辦法、字段、屬性或事宜;
10、不管對一個類創立若干個實例,它的靜態成員都只要一個正本;
11、靜態辦法和屬性不克不及拜訪其包括類型中的非靜態字段和事宜,而且不克不及拜訪任何對象的實例變量;
12、靜態辦法只能被重載,而不克不及被重寫,由於靜態辦法不屬於類的實例成員;
13、固然字段不克不及聲明為 static const,但 const 字段的行動在實質上是靜態的。如許的字段屬於類,不屬於類的實例。

3、靜態辦法

靜態辦法是不屬於特定對象的辦法,

靜態辦法可以拜訪靜態成員變量,

靜態辦法弗成以直接拜訪實例變量,可以在實例函數挪用的情形下,實例變 量做為參數傳給靜態辦法。

靜態辦法也不克不及直接挪用實例辦法,可以直接挪用,起首要創立一個類的實例,然後經由過程這一特定對象來挪用靜態辦法。

4、靜態結構函數

1:靜態類可以有靜態結構函數,靜態結構函數弗成繼續;
2:靜態結構函數可以用於靜態類,也可用於非靜態類;
3:靜態結構函數無拜訪潤飾符、無參數,只要一個 static 標記;
4:靜態結構函數弗成被直接挪用,當創立類實例或援用任何靜態成員之前,靜態結構函數被主動履行,而且只履行一次。

例如

class Program
{
        public static int i =0;
        public Program()
        {
            i = 1;
            Console.Write("實例結構辦法被挪用");
        }
        static Program()
        {
            i = 2;
            Console.Write("靜態結構函數被履行");
        }
        static void Main(string[] args)
        {
            Console.Write(Program.i);//成果為2,起首,類被加載,一切的靜態成員被創立在靜態存儲區,i=0,接著挪用了類的成員,這時候候靜態結構函數就會被挪用,i=2
            Program p = new Program();
            Console.Write(Program.i);//成果為1,實力化後,挪用了實例結構函數,i=1,由於靜態結構函數只履行一次,所以不會再履行。
        }
}

願望本文所述對年夜家的C#法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved