我有这样的课,
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)
我究竟做错了什么?
您还需要初始化名称类实例
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)
那是因为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)