当前位置:  开发笔记 > 编程语言 > 正文

为什么成员变量在构造函数中初始化?

如何解决《为什么成员变量在构造函数中初始化?》经验,为你挑选了2个好方法。

当我第一次开始使用面向对象的编程语言时,我被教导了以下规则:

在类中声明字段时,不要初始化它.在构造函数中执行此操作.

C#中的一个例子:

public class Test
{
    private List l;

    public Test()
    {
        l = new List();
    }
}

但是当有人最近问我为什么这样做时,我无法想出一个理由.我并不熟悉C#(或其他编程语言)的内部工作原理,因为我相信这可以在所有OO语言中完成.

那么,为什么这样呢?安全吗?属性?



1> Michael Borg..:

如果您有多个构造函数,则可能需要将字段初始化为不同的值

在构造函数中初始化字段时,对于何时根据构造函数的其余部分进行初始化,不会产生混淆.对于单个类来说,这似乎是微不足道的,但是如果你有一个继承层次结构,并且在每个级别运行构造函数代码并访问超类字段,那么这一点就不那么简单了.



2> Andrew Hare..:

C#编译器将采用您内联的任何非静态成员初始化,并将其移动到构造函数中.换句话说:

class Test
{
    Object o = new Object();
}

汇编到这个:

class Test
{
    Object o;

    public Test()
    {
        this.o = new Object();
    }
}

我不确定其他语言的编译器如何处理这个问题,但就C#而言,这是一个风格问题,你可以自由地做任何你想做的事情. 请注意,静态字段的处理方式不同:请 阅读本文以获取更多相关信息.

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有