Object Literal Instantiation比设置属性更快吗?

Wes*_*ley 9 c# design-patterns object instantiation objectinstantiation

鉴于以下示例,客观上比另一个客观更好/更快/更安全吗?对象文字实例化是否应该是实用的最佳实践?

这在哪里不合适?

class Person
{
    public string name;
    public int age;
}
void MakePeople()
{
    Person myPerson = new Person();
    myPerson.name = "Steve";
    myPerson.age = 21;

    Person literalPerson = new Person { name = "John", age = 22 };
}
Run Code Online (Sandbox Code Playgroud)

Ode*_*ded 16

不,它不是更快或更慢.这是相同的.

编译器将对象初始值设定项转换为构造函数调用,然后设置这些属性.

Person literalPerson = new Person { name = "John", age = 22 };
Run Code Online (Sandbox Code Playgroud)

转向:

Person myPerson = new Person();
myPerson.name = "John";
myPerson.age = 22;
Run Code Online (Sandbox Code Playgroud)

您应该使用更具可读性的内容以及您与团队达成的协议.

  • 从技术上讲,它不完全相同,因为编译器声明了一个临时变量来保持对变量atomic的赋值. (5认同)
  • 使用更具可读性的+1(尤其适用于团队环境) (2认同)