羽毛球

生活在别处

导航

<2005年6月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

统计

留言簿(29)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜

在构造函数中调用构造函数

当看到Mr. Panic的同名blog时, 马上想到了可爱的c#. 之所以称其可爱, 是因为c#对于我还只是一个玩具, magic, powerful,and nice-looking, 真正混饭吃的还是靠c++和Java.

c#支持构造函数中调用另一个构造函数. 用this关键字来调用. Code is as follows.

class Person
{
    
public Person(): this("default")
    
{
        Console.WriteLine(
"Person()");
    }

    
public Person(string yourname)
    
{
        Console.WriteLine(
"Person(string yourname)");
        name 
= yourname;
    }


    
public void ShowName()
    
{
        Console.WriteLine(
"ShowName: " + name);
    }


    
private string name;
    
    
//static constructor
    static Person()
    
{
        Console.WriteLine(
"Static person()");
    }

}


class Class1
{
    [STAThread]
    
static void Main(string[] args)
    
{
        Console.WriteLine(
"Main");
        Person p 
= new Person();
        p.ShowName();
    }

}

Output:
Main
Static person()
Person(string yourname)
Person()
ShowName: default

不过,它没有重载方法那么灵活. 构造函数必须先执行. 而不能先进行一些其他工作,再调用另一个构造函数.

随便提一下, c#的类还可以有一个静态构造函数, 主要用于初始化静态成员.

看来, 虽然常受非议, .NET还是有很多优点的.

posted on 2005-06-10 12:47 Michael 阅读(2571) 评论(2)  编辑 收藏

评论

# 没有很特别的吧! 2005-06-11 21:12 清风雨

java里面也有super和this,而且屏蔽了成员初始化列表的概念。
相对更简单明确。
c#这样。太混杂,感觉得不到什么特别的好处。——个人观点。

# re: 在构造函数中调用构造函数 2005-06-12 21:11 Michael

对.Java也可以这样.
成员初始化列表有它的优点.

标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]