看从什么角度理解。 就好比 int i = 0; i = Console.WriteLine(); 这里i = 0没有必要,就好比你的例子。但是,如果你的代码很多,在定义的时候给一个默认的初始化是一个好习惯。避免因为疏忽,造成在一些代码分支中遗漏初始化操作。
这要看具体需求。如果传入的abc有可能是null,并且你不允许_abc为null,那么你需要判断传入的abc,如果为null,直接扔ArgumentNullException。如果_abc是不是null无所谓,那么_abc = new ABC();也不需要有。如果传入的abc必不为null,那_abc = new ABC();一样没有存在的必要。如果传入的abc必为null, well, fuck that
这要看具体需求。如果传入的abc有可能是null,并且你不允许_abc为null,那么你需要判断传入的abc,如果为null,直接扔ArgumentNullException。如果_abc是不是null无所谓,那么_abc = new ABC();也不需要有。如果传入的abc必不为null,那_abc = new ABC();一样没有存在的必要。如果传入的abc必为null, well, fuck that 支持。 具体问题具体分析,有时候代码逻辑没这么简单,后面直接使用_abc.Method()就有问题了。 如果这是个Winform控件,如果出问题那所有引用的画面连设计器都打不开了。
就好比
int i = 0;
i = Console.WriteLine();
这里i = 0没有必要,就好比你的例子。但是,如果你的代码很多,在定义的时候给一个默认的初始化是一个好习惯。避免因为疏忽,造成在一些代码分支中遗漏初始化操作。
这要看具体需求。如果传入的abc有可能是null,并且你不允许_abc为null,那么你需要判断传入的abc,如果为null,直接扔ArgumentNullException。如果_abc是不是null无所谓,那么_abc = new ABC();也不需要有。如果传入的abc必不为null,那_abc = new ABC();一样没有存在的必要。如果传入的abc必为null, well, fuck that
这要看具体需求。如果传入的abc有可能是null,并且你不允许_abc为null,那么你需要判断传入的abc,如果为null,直接扔ArgumentNullException。如果_abc是不是null无所谓,那么_abc = new ABC();也不需要有。如果传入的abc必不为null,那_abc = new ABC();一样没有存在的必要。如果传入的abc必为null, well, fuck that
支持。
具体问题具体分析,有时候代码逻辑没这么简单,后面直接使用_abc.Method()就有问题了。
如果这是个Winform控件,如果出问题那所有引用的画面连设计器都打不开了。
#8 的兄弟考虑的很仔细,还考虑了null的情况, 完整程序的却需要加入异常处理的。
谢谢斑竹大人,学习了。原来编译器会自动加一个。如果ABC没有默认构造函数,这里不加new的话,可能会出错。回头测试一下。Class ABC
{
ABC(int tmp)
{
}
}
Class XYZ
{
ABC _abc;
XYZ(ABC abc)
{
_abc = new ABC(123); //这句变成了必须的吗?
_abc = abc;
}
}
没必要,多此一举