Jim*_*nes 1 c# nullreferenceexception
基本上我要做的是在客户列表中添加一个客户,在客户列表中有一个属性BillToContact.我想为客户创建一个实例BillToContact.
public class Customer
{
public string ID { get; set; }
public string AccountName { get; set; }
public Contact BillToContact { get; set; }
}
public class BillToContact
{
public string firstname { get; set; }
public string LastName { get; set; }
}
public class Contact
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
//下面是尝试将BillToContact添加到Customer
public void test()
{
List<Customer> Customer = new List<Customer>();
Customer x = new Customer();
x.ID = "MyId";
x.AccountName = "HelloAccount";
x.BillToContact.FirstName = "Jim";
x.BillToContact.LastName = "Bob";
Customer.Add(x);
}
Run Code Online (Sandbox Code Playgroud)
这次尝试的错误是
你调用的对象是空的.
我也试图创建一个BillToContact内部的实例,但Customer没有成功.为了避免任何混淆,问题是我正在尝试在Customer列表中的BillToContact中创建一个实例.
Bra*_*NET 10
您必须先实例化属性成员,然后才能设置其属性:
Customer x = new Customer();
x.ID = "MyId";
x.AccountName = "HelloAccount";
x.BillToContact = new BillToContact();
x.BillToContact.FirstName = "Jim";
x.BillToContact.LastName = "Bob";
Run Code Online (Sandbox Code Playgroud)
只是实例化父类不会自动实例化任何组合类(除非你在构造函数中这样做).
您需要实例化BillToContact
所以要么:
x.BillToContact = new BillToContact {FirstName = "Jim", LastName="Bob"};
Run Code Online (Sandbox Code Playgroud)
要么
x.BillToContact = new BillToContact();
x.BillToContact.FirstName = "Jim";
x.BillToContact.LastName = "Bob";
Run Code Online (Sandbox Code Playgroud)
两者都是等价的