欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#學(xué)習(xí)筆記整理_深入剖析構(gòu)造函數(shù)、析構(gòu)函數(shù)

 更新時(shí)間:2016年09月19日 09:01:14   投稿:jingxian  
下面小編就為大家?guī)硪黄狢#學(xué)習(xí)筆記整理_深入剖析構(gòu)造函數(shù)、析構(gòu)函數(shù)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

構(gòu)造函數(shù)、析構(gòu)函數(shù)

構(gòu)造函數(shù):

1.若沒提供任何構(gòu)造函數(shù),則系統(tǒng)會自動(dòng)提供一個(gè)默認(rèn)的構(gòu)造函數(shù),初始化所有成員為默認(rèn)值(引用類型為空引用null,值類型為0,bool類型為false);

2.若提供了帶參數(shù)的構(gòu)造函數(shù),則系統(tǒng)不提供默認(rèn)的構(gòu)造函數(shù);

3.構(gòu)造函數(shù)可重載:可提供多個(gè)不同版本的構(gòu)造函數(shù),依據(jù)參數(shù)的個(gè)數(shù)、類型來區(qū)分;

4.私有構(gòu)造函數(shù):則無法通過該構(gòu)造函數(shù)實(shí)例化該對象,可通過調(diào)用靜態(tài)函數(shù)來實(shí)例化;當(dāng)僅用作某些靜態(tài)成員或?qū)傩缘娜萜鲿r(shí),可定義私有構(gòu)造函數(shù)來防止被實(shí)例化;

一般的構(gòu)造函數(shù)都是實(shí)例構(gòu)造函數(shù),只要?jiǎng)?chuàng)建實(shí)例,就執(zhí)行構(gòu)造函數(shù);

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

1.只能定義一個(gè),最多運(yùn)行一次,僅在第一次調(diào)用類的任何成員之前由.NET運(yùn)行庫調(diào)用它,

2.它不能帶任何參數(shù)、無任何訪問修飾符,只能訪問類的靜態(tài)成員,無法訪問到類的實(shí)例成員;

3.如果類有一些靜態(tài)字段、屬性需要在第一次使用類之前從外部源中初始化,則使用靜態(tài)構(gòu)造函數(shù);

4.靜態(tài)構(gòu)造函數(shù)與無參數(shù)的實(shí)例構(gòu)造函數(shù)可以同時(shí)定義,何時(shí)執(zhí)行哪個(gè)構(gòu)造函數(shù)不會沖突;

在構(gòu)造函數(shù)中可以調(diào)用自身的其它構(gòu)造函數(shù):this(),或父類的構(gòu)造函數(shù):base(),可類似繼承的語法調(diào)用其它構(gòu)造函數(shù);

只讀字段readonly:和常量const類似,不能修改其值,但只讀字段用readonly聲明,可以未初始化,在構(gòu)造函數(shù)中對其初始化,之后不可更改其值;

匿名類型的實(shí)例化:var a = new{f1=“1ad”, f2=”34”, f3=5, f4=6};

構(gòu)造函數(shù):用于析構(gòu)類的實(shí)例

• 不能在結(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)用的。由垃圾回收器控制,如果垃圾回收器認(rèn)為某個(gè)對象符合析構(gòu),則調(diào)用析構(gòu)函數(shù)(如果有)并回收用來存儲此對象的內(nèi)存。程序退出時(shí)也會調(diào)用析構(gòu)函數(shù)

• 析構(gòu)函數(shù)既沒有修飾符,也沒有參數(shù)

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

C# 無需太多的內(nèi)存管理。這是因?yàn)?.NET Framework 垃圾回收器會隱式地管理對象的內(nèi)存分配和釋放。但是,當(dāng)應(yīng)用程序封裝窗口、文件和網(wǎng)絡(luò)連接這類非托管資源時(shí),應(yīng)當(dāng)使用析構(gòu)函數(shù)釋放這些資源。當(dāng)對象符合析構(gòu)時(shí),垃圾回收器將運(yùn)行對象的 Finalize 方法。

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

class Car

{

  -Car() 

  {

    // … …

  }

}

該析構(gòu)函數(shù)隱式地對繼承鏈中的所有實(shí)例遞歸地調(diào)用調(diào)用 Finalize()方法

public class Bus
 {
   protected static readonly DateTime globalStartTime;
 
   protected int RouteNumber { get; set; }
 
   static Bus() //靜態(tài)構(gòu)造函數(shù)
   {
 globalStartTime = DateTime.Now;
 Console.WriteLine("Static ctor sets global start time to {0}", globalStartTime.ToLongTimeString());
   }
 
   public Bus(int routeNum)
   {
 RouteNumber = routeNum;
 Console.WriteLine("{0} is created.", RouteNumber);
   }
 
   public void Drive()
   {
 TimeSpan elapsedTime = DateTime.Now - globalStartTime;
 
 Console.WriteLine("{0} is starting its route {1:N2} minutes after global start time {2}.",
             this.RouteNumber,
             elapsedTime.TotalMilliseconds,
             globalStartTime.ToShortTimeString());
   }
 }
 
 class TestBus
 {
   static void Main()
   {
 
 Bus bus = new Bus(71);
 bus.Drive();
 System.Threading.Thread.Sleep(25);
 
 Bus bus2 = new Bus(72);
 bus2.Drive();
 
 System.Console.WriteLine("Press any key to exit.");
 System.Console.ReadKey();
   }
 }
 /* Output:
   Static ctor sets global start time to 10:04:08 AM
   71 is created.
   71 is starting its route 21.00 minutes after global start time 10:04 AM.
   72 is created.
   72 is starting its route 46.00 minutes after global start time 10:04 AM.   
*/

以上就是小編為大家?guī)淼腃#學(xué)習(xí)筆記整理_深入剖析構(gòu)造函數(shù)、析構(gòu)函數(shù)的全部內(nèi)容了,希望對大家有所幫助,多多支持腳本之家~

相關(guān)文章

  • 如何使用C#程序給PDF文件添加編輯域

    如何使用C#程序給PDF文件添加編輯域

    本文主要給大家分享的是通過C#操作PDF類庫iTextSharp來實(shí)現(xiàn)在在PDF文檔中填寫日期或簽名之類的能編輯的文本域,非常的簡單實(shí)用,有需要的小伙伴可以參考下。
    2017-01-01
  • C#利用OpenCvSharp實(shí)現(xiàn)玉米粒計(jì)數(shù)

    C#利用OpenCvSharp實(shí)現(xiàn)玉米粒計(jì)數(shù)

    這篇文章主要為大家詳細(xì)介紹了C#如何結(jié)合OpenCVSharp4實(shí)現(xiàn)玉米粒計(jì)數(shù),文中的示例代碼簡潔易懂,具有一定的學(xué)習(xí)價(jià)值,需要的小伙伴可以參考下
    2023-11-11
  • C#實(shí)現(xiàn)圖片切割、切圖、裁剪

    C#實(shí)現(xiàn)圖片切割、切圖、裁剪

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)圖片切割、切圖、裁剪,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • C#獲取Excel第一列的實(shí)例方法

    C#獲取Excel第一列的實(shí)例方法

    在本篇文章里小編給各位分享了關(guān)于C# 怎么獲取Excel第一列的實(shí)例方法和代碼,需要的朋友們可以學(xué)習(xí)下。
    2019-08-08
  • C#使用GDI繪制直線的方法

    C#使用GDI繪制直線的方法

    這篇文章主要介紹了C#使用GDI繪制直線的方法,涉及C#中使用GDI繪圖的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • 關(guān)于C# TabPage如何隱藏的問題

    關(guān)于C# TabPage如何隱藏的問題

    TabPage沒有Visible屬性,所以只能通過設(shè)置將其與父控件(tabcontrol)的關(guān)聯(lián)性去除就好了,如下面代碼:
    2013-04-04
  • C#如何獲取當(dāng)前路徑的父路徑

    C#如何獲取當(dāng)前路徑的父路徑

    這篇文章主要介紹了C#如何獲取當(dāng)前路徑的父路徑問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • C#中截取字符串的的基本方法詳解

    C#中截取字符串的的基本方法詳解

    這篇文章主要介紹了C#中截取字符串的的基本方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • C# 單元測試全解析

    C# 單元測試全解析

    這篇文章主要介紹了C# 單元測試的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-04-04
  • C#使用Task實(shí)現(xiàn)異步方法

    C#使用Task實(shí)現(xiàn)異步方法

    本文主要介紹了C#使用Task實(shí)現(xiàn)異步方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評論