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#法式設計有所贊助。