老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

C#static干貨全解析


講解順序

創新互聯專注為客戶提供全方位的互聯網綜合服務,包含不限于成都網站制作、成都做網站、外貿營銷網站建設、金城江網絡推廣、重慶小程序開發公司、金城江網絡營銷、金城江企業策劃、金城江品牌公關、搜索引擎seo、人物專訪、企業宣傳片、企業代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創新互聯為所有大學生創業者提供金城江建站搭建服務,24小時服務熱線:18982081108,官方網址:www.cdcxhl.com

  1. 背景

  2. 靜態字段

  3. 靜態函數

  4. 靜態方法

  5. 疑問解答


背景

  • static來源

在編寫類的時候,有時候需要類里面的某個成員具有唯一性,也就是,對所有的對象都保持只有一個的狀態。比如創建***,我們都是中國人,但總不能每個人都要保存一個中國人字段吧,用一個就夠了

  • static作用

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

  • static特性

2.訪問不需要聲明類對象。比如

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

 2.static對象具有唯一性,無論是否產生了對象或無論產生了多少對象的情況下,某些特定的數據在內存空間里只有一份。也就是說,你無論new多少類成員,靜態變量只有一個,要變都變。


靜態字段

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

  • 作用

無論創建多少對象,靜態字段代表的數據在內存空間中只有一個。比如說系統時間,無論你安裝了多少軟件,想知道現在幾點了,都只有一個參考值,如果你改變了這個時間,那么其他軟件獲取的時間也都改變了。(當然,只是舉例,具體咋訪問時間的,俺不管)。

  • 操作順序

靜態字段是在類操作(實例化、調用靜態方法等)的時候第一個被實例化的對象。第二個是靜態構造函數,而且他倆都只能被調用一次。

  • 特性

  1. 因為靜態成員本身就是為了全局唯一性而生的,當然靜態成員在整個函數內部相當于了全局變量。

  2. 靜態成員只能被初始化一次,就是在第一次對這個類進行操作的時候創建。其他對整個類進行操作的時候,因為靜態成員已經有了,自然不會再創建。(就是給菜鳥寫的廢話,不然很多人會有疑問,比如我。)

  • 舉例

C# static 干貨全解析

如上圖,每次創建實例的時候,構造函數對兩個字段進行+1,但是結果不一樣,這就是static修飾的字段的唯一性。


靜態構造函數

  • 作用

靜態構造函數一般用來初始化靜態變量,不會初始化非靜態變量;但是因為非靜態構造函數也能操作靜態變量,所以就比較少用靜態構造函數了。

  • 操作順序

無論對類進行何種操作,靜態構造函數總是除了靜態字段以外第一個被操作的方法,比非靜態參數、非靜態構造函數都要提前。

  • 特性

  1. 只能操作靜態成員,因為非靜態成員需要實體引用。

  2. 整個生命周期只會運行一次,且不可被調用。

  3. 靜態構造函數不能有修飾符,因為只有系統才能調用,有沒有public都沒用;它也不能有輸入參數。

  4. 如果類里面含有Main方法,則先執行靜態構造函數;

  • 舉例

    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();          
        }
     }

這是網上一個很有名的static的例子,如果不看答案,能夠算出來才是本事。

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

  2. 進入B類,先對靜態字段Y分配空間,并默認賦值為0;注意,在這里Y已經初始化好了。

  3. 因為Y=A.X+1;所以操作A類的靜態字段,現在進入A類。

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

  5. 調用A的靜態構造函數。

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

  7. 調用B的靜態構造函數。

  8. 這時才會調用Main()方法,因為A.X,B.Y都完成了初始化并賦值,所以直接寫出答案。

能夠將完整的順序描述出來,static一般的面試題都難不住你了(我的意思是我很牛掰)


靜態方法

  • 應用

    靜態方法一般用于頻繁調用又不經常修改的地方。比如連接數據庫的基本語句。當然,這個特性也是因為靜態方法無法被繼承,無法進行擴展有關。

  • 操作順序

    靜態方法會在靜態字段、靜態構造函數都操作后才能被調用。

  • 特性

  1. 靜態方法調用時不需要實例化類。

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

  3. 靜態方法一經調用,就不能銷毀,除非整個應用程序域都結束了。所以靜態函數不能太多,否則一直占有內存。

  4. 因為靜態方法不能訪問非靜態變量,所以與非靜態方法耦合度較低,有利于代碼的修改。

  5. 靜態方法的執行效率比非靜態方法要高,但是因為其一直占用內存不能被銷毀,所以不能頻繁使用靜態方法。


疑問解答

  • 靜態變量與非靜態變量最大的區別是什么?

    最大的區別在于內存的位置。靜態變量的內存是在程序開始執時變量就占用了內存,直到整個程序結束時變量才釋放內存. 非靜態變量是在程序運行到該步的時候分配內存,并在執行完后自動銷毀。所以:靜態變量的值只會初始化一次,后面每次訪問,都是上次處理過的值。

  • 為什么靜態變量不需要實例化就能訪問。

    因為類在初始化的時候,就已經為靜態變量分配好了內存空間,不需要實例化就能準確找到它們的位置;而非靜態成員必須在實例化類對象以后,才能確定它們的內存位置;

    因此也有這樣的說法,靜態成員是屬于類,而非靜態成員屬于類的對象

  • 為什么靜態方法里面不能訪問非靜態變量,也不能創建非靜態變量?

    因為非靜態變量需要實例化才能確認其內存中的位置,才能調用,而靜態函數是不需要實例化的,所以靜態方法不能使用

  • 為什么方法內部不能聲明靜態變量?

    因為靜態變量是類所有實例的共用變量,也就是在該類的范疇內是個全局變量。而如果在方法內部定義靜態變量,則會導致定義的靜態變量是一個局部變量,如此定義自然會出錯。

  • 靜態成員的聲明周期

    靜態成員的生命周期是整個應用程序域的生存周期.也就是從操作含有靜態成員的類開始,一直到整個應用程序結束。


以上信息都是我參考無數資料自己整理的,當然有可能出現一些錯誤,歡迎大嬸們指正,我會努力修改好,讓這篇文章作為一篇優秀的static參考資料。


網頁題目:C#static干貨全解析
分享路徑:http://www.xueling.net.cn/article/ggsgsp.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: av在线亚洲欧洲日产一区二区 | 91国内在线 | 遮天在哪个软件可以免费阅读 | 久久午夜精品影院一区 | 亚洲精品无码mⅴ在线观看 日韩一级 | 国内成人精品 | 国产一区二区影院 | 亚洲午夜精品无码专区在线观看 | 亚洲中文字幕乱码一区二区三区 | www.youjizz.com国产 | 国产成人一区二区三区在线 | 亚洲片在线观看 | 日本免费观看一区久久久 | 欧美性人妖xxxxx极品 | 毛片免费全部播放无码 | 欧美日韩综合一区 | 国产精品香蕉在线观看首页 | 精品视频一区二区三区在线观看 | 中文字幕亚洲欧美在线不卡 | 日本三级黄在线观看 | 88国产精品视频一区二区三区 | 中文字幕人妻在线中字 | 日韩a无v码在线播放 | 日本欧美在线视频 | 熟女老女人的网站 | 粉嫩av一区二区三区四区在线观看 | 狠狠色噜噜狠狠狠7777奇米 | 中国白嫩精品bbwbbw | 97热视频在线观看99 | 日本十八禁视频无遮挡尤物 | A级无遮挡超级高清一在线观看 | 精品产国自在拍 | 嫩草在线视频 | 俄罗斯胖老太牲交 | 色婷婷999| 成人毛片免费看片 | 黄黄的网站在线观看 | 欧美激情精品久久久久久大尺度 | 精品日本一区二区三区免费 | 国产又粗又黄又爽又硬的软件 | 日韩中文字幕高清在线专区 |