注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 CCIE-Lab考试将新增10分钟..
 帮助

C#中同一个类的多个构造方法之间的调用


2007-07-13 19:12:46
 标签:构造方法 调用   [推送到技术圈]

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lcring.blog.51cto.com/195827/33978
  在C#的类中,我们有时会创建多个构造函数,以适应不同的参数情况。有时参数少的构造函数只需要以常量作为默认参数调用另一个构造函数就可以了,可是对于构造函数来说,相互之间如何调用呢?

  Class Test
  {
    // 带参数的构造函数
    public Test(int i)
    {
      Console.WriteLine(i);
    }
    // 没有参数的构造函数
    public Test()
    {
      // 这里我们如何调用Test(int i)
    }
  }

  显然,构造 函数的访问修饰符是public,我们不能像调用私有方法那样直接调用;而它也不是static静态方法,所以也不能通过类名.方法名的方式来调用;如果 作为一个普通公有的方法调用的话,需要创建类的实例,而创建类的实例需要执行构造函数,而其本身就是个构造函数,这就陷入了一个循环。
  事实上,我从网上搜到的资料,C#中类的构造函数之间的调用是这样实现的:

  Class Test
  {
    // 带参数的构造函数
    public Test(int i)
    {
      Console.WriteLine(i);
    }
    // 没有参数的构造函数
    public Test() : Test(0)
    {
      // 看到了吗,这里是不能调用的,调用要放到上面写
    }
  }

  这像什么呢?这像是类的继承。大概构造函数之间的调用,就是一种继承关系吧,而不是我们所说的调用。调用这个词,只是描述起来比较方便而已。
  这种实现方式的实质是什么?为什么这么设计?我还是想进一步探索,欢迎大家共同探讨。

本文出自 “李春锐的技术博客” 博客,请务必保留此出处http://lcring.blog.51cto.com/195827/33978





    文章评论
 
2007-07-13 21:21:21
应该是这样的吧,先调用了 public Test(int i)

2007-07-13 21:32:55
Class Test
  {
    // 带参数的构造函数
    public Test(int i)
    {
      Console.WriteLine(i);
    }
    // 没有参数的构造函数
    public Test() : Test(0)
    {
      // 看到了吗,这里是不能调用的,调用要放到上面写
    }
  }

做个备份,留下来先

2007-07-14 12:56:59
C#啊,可以看看这个博客:http://liutiemeng.blog.51cto.com/

2007-07-18 12:14:22
曾几何时,.net在51cto也要火起来了啊,大家多去论坛啊,我是.net版块的版主,大家多支持

2007-07-18 12:43:11
雨寒变节了,彻底变节了!自己的博客都长草了,还好意思宣传.net

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: