在类的定义中和在构造函数中实例化一个对象有什么区别?

时间:2022-10-20 09:21:48
例如这段代码中,_nameList和_idList,有什么区别?一直没弄懂这个问题,谢谢!

public class Test
{
    private List<string> _nameList;
    private List<string> _idList = new List<string>();

    public Test()
    {
        _nameList = new List<string>();
    }
}

8 个解决方案

#1


private List<string> _idList = new List<string>();
这句在构造函数之前执行,这是你必须注意的事情。

#2


没区别
编译器会自动给你移到构造函数里去

#3


楼上两位矛盾了⊙﹏⊙

#4


引用 3 楼  的回复:
楼上两位矛盾了⊙﹏⊙

一点都不矛盾
编译器会把那些代码插到你写的构造函数的代码的前面

#5


执行顺序的问题,不过结果都是一样的

先不考虑继承关系,执行顺序为:

1.静态字段
2.静态构造方法
3.实例字段
4.实例构造方法

#6


引用 5 楼  的回复:
执行顺序的问题,不过结果都是一样的

先不考虑继承关系,执行顺序为:

1.静态字段
2.静态构造方法
3.实例字段
4.实例构造方法

加个注释
1.静态字段(执行且仅执行一次,线程安全)
2.静态构造方法(执行且仅执行一次,线程安全)

#7


学习了,谢谢各位,结贴。

#8


引用 6 楼  的回复:
引用 5 楼 的回复:

执行顺序的问题,不过结果都是一样的

先不考虑继承关系,执行顺序为:

1.静态字段
2.静态构造方法
3.实例字段
4.实例构造方法

加个注释
1.静态字段(执行且仅执行一次,线程安全)
2.静态构造方法(执行且仅执行一次,线程安全)

+1

#1


private List<string> _idList = new List<string>();
这句在构造函数之前执行,这是你必须注意的事情。

#2


没区别
编译器会自动给你移到构造函数里去

#3


楼上两位矛盾了⊙﹏⊙

#4


引用 3 楼  的回复:
楼上两位矛盾了⊙﹏⊙

一点都不矛盾
编译器会把那些代码插到你写的构造函数的代码的前面

#5


执行顺序的问题,不过结果都是一样的

先不考虑继承关系,执行顺序为:

1.静态字段
2.静态构造方法
3.实例字段
4.实例构造方法

#6


引用 5 楼  的回复:
执行顺序的问题,不过结果都是一样的

先不考虑继承关系,执行顺序为:

1.静态字段
2.静态构造方法
3.实例字段
4.实例构造方法

加个注释
1.静态字段(执行且仅执行一次,线程安全)
2.静态构造方法(执行且仅执行一次,线程安全)

#7


学习了,谢谢各位,结贴。

#8


引用 6 楼  的回复:
引用 5 楼 的回复:

执行顺序的问题,不过结果都是一样的

先不考虑继承关系,执行顺序为:

1.静态字段
2.静态构造方法
3.实例字段
4.实例构造方法

加个注释
1.静态字段(执行且仅执行一次,线程安全)
2.静态构造方法(执行且仅执行一次,线程安全)

+1