在对象创建时用null初始化变量的正确方法?

时间:2019-03-27 08:38:38

标签: c# constructor null initialization

我有一项任务需要学习和理解别人的代码,并且看到一些构造如下的构造函数:

string someString;

public myClass(string someString = null){
  this.someString = someString;
}

我的问题是,这是否是用null初始化变量的“最佳”方法?

因为我总是这样:

string someString;

public myClass(){
  someString = null;
}

或者这样(即使我可以看到这种方法的问题):

string someString = null;

public myClass(){
}

编辑:将int更改为字符串

2 个答案:

答案 0 :(得分:1)

您正在阅读的代码与要编写的代码之间的区别在于,前者允许(但不是必需)将对象的int设置为所需的值;你的没有。

我可以通过以下方式创建不同版本的MyClass

MyClass myClass = new MyClass(5); //someInt initialised as 5
MyClass mySecondClass = new MyClass(10); //someInt initialised as 10
MyClass nullClass = new MyClass(); //someInt initialised as null

以您的方式; someInt的值是在代码中设置的,无法轻易更改

答案 1 :(得分:0)

public myClass(int? someInt = null)

这是可选参数构造函数,如果您传递变量,它将设置,否则它将为变量分配null。例如: myClass(10); //将10设置为someInt 我的课(); //将null设置为someInt

public myClass(){
  someInt = null;
}

这意味着在每种情况下,它将使用null初始化变量。