初始化变量

0 c#

声明中Method1和Method2的区别是什么?

方法1

private readonly CategoryBusiness _categoryBusiness = new CategoryBusiness();
Run Code Online (Sandbox Code Playgroud)

方法2

private readonly CategoryBusiness _categoryBusiness;

public CategoryController() : this(new CategoryBusiness())
{

}

public CategoryController(CategoryBusiness categoryBusiness)
{
    _categoryBusiness = categoryBusiness;
}
Run Code Online (Sandbox Code Playgroud)

更新: 我的确切问题是

在其声明中初始化一个只读字段与在构造函数中使用相同值初始化它是一样的吗?

Hab*_*bib 5

同样,readonly现场可分配与声明或在构造函数的值.

readonly(C#参考)

当字段声明包含只读修饰符时,声明引入的字段的赋值只能作为声明的一部分或在同一个类的构造函数中出现.

通过构造函数初始化它具有在对象初始化期间为字段分配值的额外好处.(正如LukeHennerley的评论)

readonly关键字与const关键字不同.const字段只能在字段声明时初始化.可以在声明或构造函数中初始化只读字段.因此,readonly字段可以具有不同的值,具体取决于所使用的构造函数.