惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
酷 壳 – CoolShell
酷 壳 – CoolShell
人人都是产品经理
人人都是产品经理
Jina AI
Jina AI
雷峰网
雷峰网
博客园_首页
WordPress大学
WordPress大学
博客园 - 司徒正美
爱范儿
爱范儿
博客园 - 聂微东
IT之家
IT之家
美团技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
有赞技术团队
有赞技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Tailwind CSS Blog
博客园 - Franky
V
V2EX
GbyAI
GbyAI
阮一峰的网络日志
阮一峰的网络日志

博客园 - ccs

ASP.NET MVC Preview版 跟进... SQL Server 2008 对 T-SQL 语言的增强 C# 3.X -- the newest features Ruby on Rails的开发环境配置 Monorail tutorial Ms推出了DLR, Silverlight,IronRuby 百度的矛对腾讯的盾 IM跟搜索谁能当新霸主?(ZT) MVC框架显示层—使用Monorail点滴(1) MVC框架显示层—Velocity/nVelocity技术 成功的观念 分享关于过程的事务处理类 生成静态页面的五种方案(转) C#面向对象系列(1):值得关注的概念 XSL开发文档系列 使用Nhibernate.Tool.Hbm2Net来根据HBML文件生成POJO类的代码 推荐书籍系列(5):.NET框架程序设计(修订版) 推荐书籍系列(4):设计模式 推荐书籍系列(3):代码大全(第二版) 推荐书籍系列(2):敏捷软件开发――原则、模式与实践
C#面向对象系列(2):构造函数的用法
ccs · 2006-04-23 · via 博客园 - ccs


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

2.  构造函数互相之间的可链接关系

 1using System;
 2
 3namespace Webtest
 4{
 5     /// <summary>
 6     /// manager 的摘要说明。
 7     /// </summary>

 8     public class manager
 9     {
10         public manager():this("test",0)
11         {}
12 
13         public manager(string name):this(name,0)
14        {}
15
16         public manager(string name,int grade)
17         {
18              this.Grade = grade;
19              this.Name = name;
20         }

21          private string mName;
22         public string Name
23         {
24              get
25              {
26                   return this.mName;
27             }

28              set
29              {
30                   this.mName = value;
31              }

32         }

33          private int mGrade;
34         public int Grade
35         {
36              get
37              {
38                   return this.mGrade;
39              }

40              set
41              {
42                   this.mGrade = value;
43              }

44         }

45 
46     }

47
48

 
3.调用基类的构造函数


每个派生类都隐式或者显示的调用基类的构造函数,实际上,如果没有显示的调用基类的构造函数,则CLR就会

调用无参数的构造函数。

基类的构造函数只能从派生类的构造函数中调用。调用完才执行派生类的构造函数代码块中的实现。

4.私有构造函数


私有构造函数一般包含在许多静态方法的类中,这些静态方法用作一个库,而不是对象。添加构造函数将确保

类不能在外部被创建。这也是在很多设计模式中都有用到的

使用私有构造函数的2个意义是:

1)  私有构造函数不能在外部被创建。

2)  如果不提供参数,所创建的对象是无意义的。

a)   无论指定与否,派生类中是要调用基类的构造函数,这表示,带有私有构造函数的类不能用做基类,因为

他们的构造函数对派生类来说是不可见的。

b)   当另一个类嵌套在带有私有构造函数的类中时,包含私有构造函数的类就可以由其他对象创建。无论对象

是不是私有,嵌套的构造函数总是可以创建其容器类的实例。

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;
              }

         }

 
     }


5.静态构造函数

静态的构造函数是不能重载的,所以可用的静态构造函数只有一个默认的无参数构造函数。静态构造函数也不

能显示调用,不能在派生类中继承,但是在创建基类类型时可以调用。

几个原则:

1)  静态构造函数在创建类的实例之前调用

2)  静态构造函数在创建类的第一个实例之前调用

3)  静态构造函数在引用静态字段之前调用。