熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

C#中構造函數和析構函數的用法(一)

2013-11-13 10:58:20  來源: .NET編程 

  摘要

  構造函數與析構函數是一個類中看似較為簡單的兩類函數但在實際運用過程中總會出現一些意想不到的運行錯誤本文將較系統的介紹構造函數與析構函數的原理及在C#中的運用以及在使用過程中需要注意的若干事項

  一.構造函數與析構函數的原理

  作為比C更先進的語言C#提供了更好的機制來增強程序的安全性C#編譯器具有嚴格的類型安全檢查功能它幾乎能找出程序中所有的語法問題這的確幫了程序員的大忙但是程序通過了編譯檢查並不表示錯誤已經不存在了錯誤的大家庭裡語法錯誤的地位只能算是冰山一角級別高的錯誤通常隱藏得很深不容易發現

  根據經驗不少難以察覺的程序錯誤是由於變量沒有被正確初始化或清除造成的而初始化和清除工作很容易被人遺忘微軟利用面向對象的概念在設計C#語言時充分考慮了這個問題並很好地予以解決把對象的初始化工作放在構造函數中把清除工作放在析構函數中當對象被創建時構造函數被自動執行當對象消亡時析構函數被自動執行這樣就不用擔心忘記對象的初始化和清除工作

  二.構造函數在C#中的運用

  構造函數的名字不能隨便起必須讓編譯器認得出才可以被自動執行它的命名方法既簡單又合理讓構造函數與類同名除了名字外構造函數的另一個特別之處是沒有返回值類型這與返回值類型為void的函數不同如果它有返回值類型那麼編譯器將不知所措在你可以訪問一個類的方法屬性或任何其它東西之前 第一條執行的語句是包含有相應類的構造函數甚至你自己不寫一個構造函數也會有一個缺省構造函數提供給你

  class TestClass
  {
   public TestClass(): base() {} // 由CLR提供
  }
  
  下面列舉了幾種類型的構造函數
  
  )缺省構造函數

  class TestClass
  {
   public TestClass(): base() {}
  }

  上面已介紹它由系統(CLR)提供

  )實例構造函數

  實例構造函數是實現對類中實例進行初始化的方法成員

  using System;
  class Point
  {
   public double x y;
   public Point()
   {
    thisx = ;
    thisy = ;
   }
   public Point(double x double y)
   {
    thisx = x;
    thisy = y;
   }
   …
  }
  class Test
  {
   static void Main()
   {
    Point a = new Point();
    Point b = new Point( ); // 用構造函數初始化對象
    …
   }
  }


From:http://tw.wingwit.com/Article/program/net/201311/14889.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.