如何初始化对象?

Joh*_*ohn 1 c#

我有这样的课,

public class person
{
 name Name {set; get;}
 string Address {set; get;}
}

public class name
{
  string First {set; get;}
  string Last {set; get;}
}
Run Code Online (Sandbox Code Playgroud)

现在,当我创建对象时,尝试设置第一个或最后一个名称,我得到一个错误."你调用的对象是空的."

person Person = new person();
Person.Name.First = "John";
Person.Name.Last ="Smith";
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Adr*_*der 6

您还需要初始化名称类实例

person Person = new person();
Person.Name = new name();
Person.Name.First = "A";
Run Code Online (Sandbox Code Playgroud)

person如果您愿意,也可以在构造函数中执行此操作

public class person
    {
        public name Name { set; get; }
        string Address { set; get; }

        public person()
        {
            Name = new name();
        }
    }
Run Code Online (Sandbox Code Playgroud)

甚至尝试

person Person = new person { Name = new name { First = "A", Last = "B" } };
Run Code Online (Sandbox Code Playgroud)


dri*_*iis 5

那是因为Name属性为null.您尚未为其指定值.

试试这个:

person p = new person();
p.Name = new Name();
p.Name.First = "John";
p.Name.Last = "Smith";
Run Code Online (Sandbox Code Playgroud)

或者使用C#3.0及更高版本提供的对象初始化程序语法:

var p = new person { Name = new name { 
    First = "John", Last = "Smith" } 
};
Run Code Online (Sandbox Code Playgroud)