对象初始化器和构造器

Tam*_*ich 2 c# object object-initializers

我试图使用Object初始化器来设置类的属性,然后在类的构造函数中访问它们.问题是在构造函数运行之后似乎没有设置属性.难道我做错了什么.

基础班..

public class TestClass
{
    public string FirstName{get; set;}

    public TestClass(){
       NewClass nc = NewClass(FirstName);
    }

}
Run Code Online (Sandbox Code Playgroud)

客户类

public class ClientClass
{
   public ClientClass(){
      TestClass tc = new TestClass{ FirstName="Jimmy"};
   }
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*ott 10

对象初始化器实际上是语法糖.鉴于:

var person = new Person() { Name = "Matt" };
Run Code Online (Sandbox Code Playgroud)

编译器会将其更改为:

Person person = new Person();
person.Name = "Matt";
Run Code Online (Sandbox Code Playgroud)

(实际上,它的IL变体)

构造函数将始终在任何属性集之前执行.在创建传递的构造函数时,非常重要的是需要任何参数来正确初始化您的类型.在您的示例中,您需要FirstName,那么为什么不将其作为构造函数参数传递?

public TestClass(string firstName) { }
Run Code Online (Sandbox Code Playgroud)