成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

C#static干貨全解析


講解順序

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、金城江網(wǎng)絡(luò)推廣、重慶小程序開(kāi)發(fā)公司、金城江網(wǎng)絡(luò)營(yíng)銷、金城江企業(yè)策劃、金城江品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供金城江建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:jinyejixie.com

  1. 背景

  2. 靜態(tài)字段

  3. 靜態(tài)函數(shù)

  4. 靜態(tài)方法

  5. 疑問(wèn)解答


背景

  • static來(lái)源

在編寫類的時(shí)候,有時(shí)候需要類里面的某個(gè)成員具有唯一性,也就是,對(duì)所有的對(duì)象都保持只有一個(gè)的狀態(tài)。比如創(chuàng)建***,我們都是中國(guó)人,但總不能每個(gè)人都要保存一個(gè)中國(guó)人字段吧,用一個(gè)就夠了。

  • static作用

MSDN說(shuō):使用 static 修飾符聲明屬于類型本身而不是屬于特定對(duì)象的靜態(tài)成員。也就是說(shuō),用static修改的對(duì)象是一個(gè)類的全部成員,不屬于某個(gè)類特有的。比如,轎車有四個(gè)輪子,而不是某種轎車有四個(gè)輪子。

  • static特性

2.訪問(wèn)不需要聲明類對(duì)象。比如

Console.Write();//Write()這就是一個(gè)靜態(tài)方法,不需要new Consolo();

 2.static對(duì)象具有唯一性,無(wú)論是否產(chǎn)生了對(duì)象或無(wú)論產(chǎn)生了多少對(duì)象的情況下,某些特定的數(shù)據(jù)在內(nèi)存空間里只有一份。也就是說(shuō),你無(wú)論new多少類成員,靜態(tài)變量只有一個(gè),要變都變。


靜態(tài)字段

所謂靜態(tài)字段,也就是有static修改的字段啦(對(duì),就是廢話o(∩_∩)o )。

  • 作用

無(wú)論創(chuàng)建多少對(duì)象,靜態(tài)字段代表的數(shù)據(jù)在內(nèi)存空間中只有一個(gè)。比如說(shuō)系統(tǒng)時(shí)間,無(wú)論你安裝了多少軟件,想知道現(xiàn)在幾點(diǎn)了,都只有一個(gè)參考值,如果你改變了這個(gè)時(shí)間,那么其他軟件獲取的時(shí)間也都改變了。(當(dāng)然,只是舉例,具體咋訪問(wèn)時(shí)間的,俺不管)。

  • 操作順序

靜態(tài)字段是在類操作(實(shí)例化、調(diào)用靜態(tài)方法等)的時(shí)候第一個(gè)被實(shí)例化的對(duì)象。第二個(gè)是靜態(tài)構(gòu)造函數(shù),而且他倆都只能被調(diào)用一次。

  • 特性

  1. 因?yàn)殪o態(tài)成員本身就是為了全局唯一性而生的,當(dāng)然靜態(tài)成員在整個(gè)函數(shù)內(nèi)部相當(dāng)于了全局變量。

  2. 靜態(tài)成員只能被初始化一次,就是在第一次對(duì)這個(gè)類進(jìn)行操作的時(shí)候創(chuàng)建。其他對(duì)整個(gè)類進(jìn)行操作的時(shí)候,因?yàn)殪o態(tài)成員已經(jīng)有了,自然不會(huì)再創(chuàng)建。(就是給菜鳥(niǎo)寫的廢話,不然很多人會(huì)有疑問(wèn),比如我。)

  • 舉例

C# static 干貨全解析

如上圖,每次創(chuàng)建實(shí)例的時(shí)候,構(gòu)造函數(shù)對(duì)兩個(gè)字段進(jìn)行+1,但是結(jié)果不一樣,這就是static修飾的字段的唯一性。


靜態(tài)構(gòu)造函數(shù)

  • 作用

靜態(tài)構(gòu)造函數(shù)一般用來(lái)初始化靜態(tài)變量,不會(huì)初始化非靜態(tài)變量;但是因?yàn)榉庆o態(tài)構(gòu)造函數(shù)也能操作靜態(tài)變量,所以就比較少用靜態(tài)構(gòu)造函數(shù)了。

  • 操作順序

無(wú)論對(duì)類進(jìn)行何種操作,靜態(tài)構(gòu)造函數(shù)總是除了靜態(tài)字段以外第一個(gè)被操作的方法,比非靜態(tài)參數(shù)、非靜態(tài)構(gòu)造函數(shù)都要提前。

  • 特性

  1. 只能操作靜態(tài)成員,因?yàn)榉庆o態(tài)成員需要實(shí)體引用。

  2. 整個(gè)生命周期只會(huì)運(yùn)行一次,且不可被調(diào)用。

  3. 靜態(tài)構(gòu)造函數(shù)不能有修飾符,因?yàn)橹挥邢到y(tǒng)才能調(diào)用,有沒(méi)有public都沒(méi)用;它也不能有輸入?yún)?shù)。

  4. 如果類里面含有Main方法,則先執(zhí)行靜態(tài)構(gòu)造函數(shù);

  • 舉例

    class A
    {
        public static int X;

        static A()
        {
            X = B.Y + 1;
        }
    }
    class B
    {
        public static int Y = A.X +1;
        static B()
        {
        }

        static void Main(string[] args)
        {
            Console.WriteLine(string.Format("Y={0}, X={1}", B.Y, A.X));//Y=2, X=1;
            Console.ReadLine();          
        }
     }

這是網(wǎng)上一個(gè)很有名的static的例子,如果不看答案,能夠算出來(lái)才是本事。

  1. 首先,Main()方法在B類里面,所以需要先調(diào)用B類。

  2. 進(jìn)入B類,先對(duì)靜態(tài)字段Y分配空間,并默認(rèn)賦值為0;注意,在這里Y已經(jīng)初始化好了。

  3. 因?yàn)閅=A.X+1;所以操作A類的靜態(tài)字段,現(xiàn)在進(jìn)入A類。

  4. 同樣的,先對(duì)A類的X分配空間并賦值為0。然后X=B.Y+1,B.Y已經(jīng)存在了,為0,所以X=B.Y+1執(zhí)行完后,X = 1。

  5. 調(diào)用A的靜態(tài)構(gòu)造函數(shù)。

  6. 完成Y的賦值,Y=A.X + 1,Y=2。

  7. 調(diào)用B的靜態(tài)構(gòu)造函數(shù)。

  8. 這時(shí)才會(huì)調(diào)用Main()方法,因?yàn)锳.X,B.Y都完成了初始化并賦值,所以直接寫出答案。

能夠?qū)⑼暾捻樞蛎枋龀鰜?lái),static一般的面試題都難不住你了(我的意思是我很牛掰)


靜態(tài)方法

  • 應(yīng)用

    靜態(tài)方法一般用于頻繁調(diào)用又不經(jīng)常修改的地方。比如連接數(shù)據(jù)庫(kù)的基本語(yǔ)句。當(dāng)然,這個(gè)特性也是因?yàn)殪o態(tài)方法無(wú)法被繼承,無(wú)法進(jìn)行擴(kuò)展有關(guān)。

  • 操作順序

    靜態(tài)方法會(huì)在靜態(tài)字段、靜態(tài)構(gòu)造函數(shù)都操作后才能被調(diào)用。

  • 特性

  1. 靜態(tài)方法調(diào)用時(shí)不需要實(shí)例化類。

  2. 靜態(tài)方法只能引用靜態(tài)方法、字段、屬性。靜態(tài)方法里不能有非靜態(tài)變量。

  3. 靜態(tài)方法一經(jīng)調(diào)用,就不能銷毀,除非整個(gè)應(yīng)用程序域都結(jié)束了。所以靜態(tài)函數(shù)不能太多,否則一直占有內(nèi)存。

  4. 因?yàn)殪o態(tài)方法不能訪問(wèn)非靜態(tài)變量,所以與非靜態(tài)方法耦合度較低,有利于代碼的修改。

  5. 靜態(tài)方法的執(zhí)行效率比非靜態(tài)方法要高,但是因?yàn)槠湟恢闭加脙?nèi)存不能被銷毀,所以不能頻繁使用靜態(tài)方法。


疑問(wèn)解答

  • 靜態(tài)變量與非靜態(tài)變量最大的區(qū)別是什么?

    最大的區(qū)別在于內(nèi)存的位置。靜態(tài)變量的內(nèi)存是在程序開(kāi)始執(zhí)時(shí)變量就占用了內(nèi)存,直到整個(gè)程序結(jié)束時(shí)變量才釋放內(nèi)存. 非靜態(tài)變量是在程序運(yùn)行到該步的時(shí)候分配內(nèi)存,并在執(zhí)行完后自動(dòng)銷毀。所以:靜態(tài)變量的值只會(huì)初始化一次,后面每次訪問(wèn),都是上次處理過(guò)的值。

  • 為什么靜態(tài)變量不需要實(shí)例化就能訪問(wèn)。

    因?yàn)轭愒诔跏蓟臅r(shí)候,就已經(jīng)為靜態(tài)變量分配好了內(nèi)存空間,不需要實(shí)例化就能準(zhǔn)確找到它們的位置;而非靜態(tài)成員必須在實(shí)例化類對(duì)象以后,才能確定它們的內(nèi)存位置;

    因此也有這樣的說(shuō)法,靜態(tài)成員是屬于類,而非靜態(tài)成員屬于類的對(duì)象

  • 為什么靜態(tài)方法里面不能訪問(wèn)非靜態(tài)變量,也不能創(chuàng)建非靜態(tài)變量?

    因?yàn)榉庆o態(tài)變量需要實(shí)例化才能確認(rèn)其內(nèi)存中的位置,才能調(diào)用,而靜態(tài)函數(shù)是不需要實(shí)例化的,所以靜態(tài)方法不能使用

  • 為什么方法內(nèi)部不能聲明靜態(tài)變量?

    因?yàn)殪o態(tài)變量是類所有實(shí)例的共用變量,也就是在該類的范疇內(nèi)是個(gè)全局變量。而如果在方法內(nèi)部定義靜態(tài)變量,則會(huì)導(dǎo)致定義的靜態(tài)變量是一個(gè)局部變量,如此定義自然會(huì)出錯(cuò)。

  • 靜態(tài)成員的聲明周期

    靜態(tài)成員的生命周期是整個(gè)應(yīng)用程序域的生存周期.也就是從操作含有靜態(tài)成員的類開(kāi)始,一直到整個(gè)應(yīng)用程序結(jié)束。


以上信息都是我參考無(wú)數(shù)資料自己整理的,當(dāng)然有可能出現(xiàn)一些錯(cuò)誤,歡迎大嬸們指正,我會(huì)努力修改好,讓這篇文章作為一篇優(yōu)秀的static參考資料。

網(wǎng)站標(biāo)題:C#static干貨全解析
文章位置:http://jinyejixie.com/article38/ggsgsp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站收錄用戶體驗(yàn)、搜索引擎優(yōu)化、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司
嘉定区| 崇州市| 通道| 丰顺县| 教育| 和平区| 九江县| 新郑市| 淮南市| 龙泉市| 韩城市| 当阳市| 阿图什市| 玉树县| 阳春市| 怀来县| 泸水县| 顺昌县| 岳池县| 葵青区| 汶上县| 开远市| 大兴区| 翼城县| 太湖县| 宣恩县| 瓮安县| 浪卡子县| 石林| 兴隆县| 乌兰县| 留坝县| 仁布县| 柳江县| 隆回县| 衢州市| 鄂伦春自治旗| 措勤县| 慈利县| 杭锦后旗| 九龙县|