• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            C++ Programmer's Cookbook

            {C++ 基礎(chǔ)} {C++ 高級} {C#界面,C++核心算法} {設(shè)計(jì)模式} {C#基礎(chǔ)}

            destructor/unsafe(c#)

            不能對結(jié)構(gòu)使用析構(gòu)函數(shù)。只能對類使用析構(gòu)函數(shù)。

            一個(gè)類只能有一個(gè)析構(gòu)函數(shù)。

            無法繼承或重載析構(gòu)函數(shù)。

            無法調(diào)用析構(gòu)函數(shù)。它們是被自動(dòng)調(diào)用的。

            析構(gòu)函數(shù)既沒有修飾符,也沒有參數(shù)。例如,下面是類 MyClass 的析構(gòu)函數(shù)的聲明:

            ~ MyClass() 
            {
               // Cleanup statements.
            }

            該析構(gòu)函數(shù)隱式地對對象的基類調(diào)用 Object.Finalize 方法。這樣,前面的析構(gòu)函數(shù)代碼被隱式地轉(zhuǎn)換為:

            protected override void Finalize()
            {
               try
               {
                  // Cleanup statements.
               }
               finally
               {
                  base.Finalize();
               }
            }

            這意味著對繼承鏈中的所有實(shí)例遞歸地(從派生相近程度最大的到派生相近程度最小的)調(diào)用 Finalize 方法。

            程序員無法控制何時(shí)調(diào)用析構(gòu)函數(shù),因?yàn)檫@由垃圾回收器決定的。垃圾回收器檢查是否存在應(yīng)用程序不再使用的對象。它認(rèn)為這些對象符合銷毀條件并回收這些對象占用的內(nèi)存。程序退出時(shí)也會(huì)調(diào)用析構(gòu)函數(shù)。

            可以通過調(diào)用 GC.Collect 方法強(qiáng)制進(jìn)行垃圾回收,但大多數(shù)情況下應(yīng)避免這樣做,因?yàn)檫@樣會(huì)導(dǎo)致出現(xiàn)性能問題。

            使用析構(gòu)函數(shù)釋放資源

            一般來說,您不必像使用 C++ 時(shí)那樣關(guān)注內(nèi)存管理。這是因?yàn)?.NET Framework 垃圾回收器會(huì)隱式地管理對象的內(nèi)存分配和釋放。但是,當(dāng)應(yīng)用程序封裝窗口、文件和網(wǎng)絡(luò)連接這類非托管資源時(shí),應(yīng)當(dāng)使用析構(gòu)函數(shù)釋放這些資源。當(dāng)對象符合銷毀條件時(shí),垃圾回收器會(huì)運(yùn)行對象的 Finalize 方法。

            資源的顯式釋放

            如果您的應(yīng)用程序在使用昂貴的外部資源,則還建議您提供一種在垃圾回收器釋放對象前顯式地釋放資源的方式。可通過實(shí)現(xiàn) Dispose 方法(來自 IDisposable 接口)來完成這一點(diǎn),該方法為對象執(zhí)行必要的清理。這樣可大大提高應(yīng)用程序的性能。即使有這種對資源的顯式控制,析構(gòu)函數(shù)也是一種保護(hù)措施,可用來在對 Dispose 方法的調(diào)用失敗時(shí)清理資源。

            有關(guān)清理資源的更多詳細(xì)信息,請參見下列主題:

            請參見

            “垃圾回收”編程要旨 | 8.13 using 語句 | 構(gòu)造函數(shù)和析構(gòu)函數(shù)


            --------------------------------------------------

            unsafe

            unsafe 關(guān)鍵字表示不安全上下文,該上下文是任何涉及指針的操作所必需的。

            可以在類型或成員的聲明中使用 unsafe 修飾符。因此,類型或成員的整個(gè)正文范圍均被視為不安全上下文。例如,以下是用 unsafe 修飾符聲明的方法:

            unsafe static void FastCopy ( byte[] src, byte[] dst, int count )
            {
               // unsafe context: can use pointers here
            }

            不安全上下文的范圍從參數(shù)列表擴(kuò)展到方法的結(jié)尾,因此指針在以下參數(shù)列表中也可以使用:

            unsafe static void FastCopy ( byte* ps, byte* pd, int count ) {...}

            還可以使用不安全塊從而能夠使用該塊內(nèi)的不安全代碼。例如:

            unsafe 
            {
               // unsafe context: can use pointers here
            }

            若要編譯不安全代碼,必須指定 /unsafe 編譯器選項(xiàng)。無法通過公共語言運(yùn)行庫驗(yàn)證不安全代碼。

            示例

            // cs_unsafe_keyword.cs
            // compile with: /unsafe
            using System;
            class UnsafeTest 
            {
               // unsafe method: takes pointer to int:
               unsafe static void SquarePtrParam (int* p) 
               {
                  *p *= *p;
               }
               unsafe public static void Main() 
               {
                  int i = 5;
                  // unsafe method: uses address-of operator (&)
                  SquarePtrParam (&i);
                  Console.WriteLine (i);
               }
            }

            輸出

            25

            posted on 2005-11-21 17:44 夢在天涯 閱讀(887) 評論(0)  編輯 收藏 引用 所屬分類: C#/.NET

            公告

            EMail:itech001#126.com

            導(dǎo)航

            統(tǒng)計(jì)

            • 隨筆 - 461
            • 文章 - 4
            • 評論 - 746
            • 引用 - 0

            常用鏈接

            隨筆分類

            隨筆檔案

            收藏夾

            Blogs

            c#(csharp)

            C++(cpp)

            Enlish

            Forums(bbs)

            My self

            Often go

            Useful Webs

            Xml/Uml/html

            搜索

            •  

            積分與排名

            • 積分 - 1811120
            • 排名 - 5

            最新評論

            閱讀排行榜

            婷婷久久综合九色综合98| 精品久久久久久国产三级| 久久精品国产亚洲AV麻豆网站| 香蕉久久夜色精品升级完成| 久久国产精品99久久久久久老狼| 国产精品久久久久久久午夜片| 久久人人爽人人爽人人片AV麻烦| 99久久精品国内| 久久久精品国产| 一级做a爱片久久毛片| 亚洲成色www久久网站夜月| 久久久无码精品亚洲日韩软件| 久久精品国产久精国产| 999久久久免费国产精品播放| 中文字幕久久精品| 国产精品欧美久久久久无广告 | 99久久99久久久精品齐齐| 一本色道久久88精品综合| 国产L精品国产亚洲区久久| 久久午夜无码鲁丝片| 久久婷婷是五月综合色狠狠| 99久久www免费人成精品| 久久精品蜜芽亚洲国产AV| 久久天天躁狠狠躁夜夜躁2014| 久久人人爽人人澡人人高潮AV| 热re99久久精品国产99热| 久久久久亚洲AV无码麻豆| 国产精品99久久久久久宅男小说| 久久强奷乱码老熟女| 久久精品国产一区二区电影| 99久久亚洲综合精品成人| 国产精品久久久久天天影视| 久久久久亚洲AV无码网站| 国产精品久久久亚洲| …久久精品99久久香蕉国产 | 久久综合一区二区无码| 久久成人精品| 亚洲午夜无码AV毛片久久| 伊人色综合久久天天网| 偷偷做久久久久网站| 无码日韩人妻精品久久蜜桃|