在这里,您可以看到ReSharper如何建议更改

现在,您可以看到Resharper如何更改代码,但结果不正确,因为它正在新建一个类,为其上的属性赋值,然后返回一个没有该类的该类的全新实例.分配给它的价值.

我在新关键字上有光标.按下Alt + Enter并选择名为"use object initializer"的选项.
这是ReSharper中可能存在的错误还是我在这里遗漏了一些东西?
注意:所有构建器仅用于单元测试.
所以我一直在创建构建器,因为我一直在创建它们,我已经开始注意到已经存在的其他一些构建器遵循一些不同的模式.
以为我在这里问哪一个更有效.
我这样做是这样的:
public class Builder
{
public Builders()
{
SetDefaults();
}
private void SetDefaults()
{
// Setting my defaults
}
}
Run Code Online (Sandbox Code Playgroud)
另一种方式:
public class Builder
{
public Builder WithDefaults()
{
// Setting my defaults
}
}
Run Code Online (Sandbox Code Playgroud)
在我看来,第一个更有效,因为你只是创建你的构建器,它会自动为你做默认设置.
在另一种情况下,您必须显式调用WithDefaults方法来设置所有默认值,然后再继续构建它.
第二个似乎更容易出错,因为一些需要构建的对象如果没有设置所有字段,则会抛出null异常.
也许我错过了一些微妙的东西,所以我决定问你哪一个更有效的前进.
谢谢.