構造函數的用法學習

1。如果不爲類編寫構造函數,編譯器就會創建一個默認的構造函數,運行時會在創建新對象時調用它。

 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

2。構造函數互相之間的可鏈接關係

using System;

 

namespace Webtest

{

     /// <summary>

     /// manager 的摘要說明。

     /// </summary>

     public class manager

     {

         public manager():this("test",0)

         {}

 

         public manager(string name):this(name,0)

         {}

 

         public manager(string name,int grade)

         {

              this.Grade = grade;

              this.Name = name;

         }

          private string mName;

         public string Name

         {

              get

              {

                   return this.mName;

              }

              set

              {

                   this.mName = value;

              }

         }

          private int mGrade;

         public int Grade

         {

              get

              {

                   return this.mGrade;

              }

              set

              {

                   this.mGrade = value;

              }

         }

 

     }

 

3.調用基類的構造函數

每個派生類都隱式或者顯示的調用基類的構造函數,實際上,如果沒有顯示的調用基類的構造函數,則CLR就會調用無參數的構造函數。

基類的構造函數只能從派生類的構造函數中調用。調用完才執行派生類的構造函數代碼塊中的實現。

 

4.私有構造函數

私有構造函數一般包含在許多靜態方法的類中,這些靜態方法用作一個庫,而不是對象。添加構造函數將確保類不能在外部被創建。這也是在很多設計模式中都有用到的

 

使用私有構造函數的2個意義是:

1)  私有構造函數不能在外部被創建。

2)  如果不提供參數,所創建的對象是無意義的。

a)         無論指定與否,派生類中是要調用基類的構造函數,這表示,帶有私有構造函數的類不能用做基類,因爲他們的構造函數對派生類來說是不可見的。

b)        當另一個類嵌套在帶有私有構造函數的類中時,包含私有構造函數的類就可以由其他對象創建。無論對象是不是私有,嵌套的構造函數總是可以創建其容器類的實例。

 

using System;

 

namespace Webtest

{

     /// <summary>

     /// Teacher 的摘要說明。

     /// </summary>

     public class Teacher

     {

          private Teacher()

         {

              //

              // TODO: 在此處添加構造函數邏輯

              //

         }

         public Teacher(string name)

         {

              this.Name = name;

         }

 

          private string mName;

         public string Name

         {

              get

              {

                   return this.mName;

              }

              set

              {

                   this.mName = value;

              }

         }

          private int mGrade;

         public int Grade

         {

              get

              {

                   return this.mGrade;

              }

              set

              {

                   this.mGrade = value;

              }

         }

     }

}

 

 

5.靜態構造函數

 

靜態的構造函數是不能重載的,所以可用的靜態構造函數只有一個默認的無參數構造函數。靜態構造函數也不能顯示調用,不能在派生類中繼承,但是在創建基類類型時可以調用。

 

幾個原則:

1)  靜態構造函數在創建類的實例之前調用

2)  靜態構造函數在創建類的第一個實例之前調用

3)  靜態構造函數在引用靜態字段之前調用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章