代码改变世界

C#拾遗系列(3):构造函数

2008-06-11 15:19  敏捷的水  阅读(558)  评论(0编辑  收藏  举报

 

1. 主要演示构造函数的继承

 

  •   声明空构造函数可阻止自动生成默认构造函数。
  •   如果您不对构造函数使用访问修饰符,则在默认情况下它仍为私有构造函数。
  •   通常显式地使用 private 修饰符来清楚地表明该类不能被实例化。

 

2. 静态构造函数

  • 静态构造函数具有以下特点:
  • 静态构造函数既没有访问修饰符,也没有参数。
  • 在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类。
  • 无法直接调用静态构造函数。
  • 在程序中,用户无法控制何时执行静态构造函数。
  • 静态构造函数的典型用途是:当类使用日志文件时,将使用这种构造函数向日志文件中写入项。
  • 静态构造函数在为非托管代码创建包装类时也很有用

3. 示例:

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

//Description: 构造函数测试

 

namespace NetTest

{

   public class Father

    {

 

       public Father()

       {

           Console.Out.WriteLine("Father say");

       }

        public static Father()

        { }

        */

 

       public Father(string s)

       {

           Console.Out.WriteLine(s + ":Father Say");

       }

    }

 

   public class Son:Father

   { 

       /*

       //调用父无参构造函数类构造函数

       public Son()

       {

           Console.Out.WriteLine("Son say");

       }

        */   

       public Son(string s)

       {

           Console.Out.WriteLine("good son say:");      

       }

 

       /* base显示调用父类构造函数

       public Son()

           : base("jack")

       {

           Console.Out.WriteLine("Son say");

       }

       */

 

       /*子类会隐示调用父类无参构造函数*/

       /*this调用自身重载的构造函数*/

       public Son()

           : this("call myself another constructor")

       {             

           Console.Out.WriteLine("above sentence calling myself");      

       }     

   }

 

   public class TestConstructor

   {

 

       public void Test()

       {

           new Son();       

       }

   }

}