构造函数的用法学习

1。如果不为类编写构造函数,编译器就会创建一个默认的构造函数,运行时会在创建新对象时调用它。

 

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)  静态构造函数在引用静态字段之前调用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值