这是我第一次与Lists合作,而且我似乎没有做对。我有一个Customer类,其客户列表作为Customer类中的属性(可以这样做吗?)
public class Customer
{
private List<Customer> customers = new List<Customer>();
public List<Customer> Customers
{
get { return customers; }
set { customers = value; }
}
在我的程序中,我添加到此客户列表中:
Customer C = new Customer();
Customer.InputCustomer(C);
C.Customers.Add(C);
现在我需要在此列表中显示客户。我已将AllCustomers函数添加到Customer Class,如下所示:
public static void AllCustomers()
{
foreach (Customer customer in Customers) //Fail on "Customers"
{
Console.WriteLine("Customer ID: " + customer.ID);
Console.WriteLine("Customer Name: " + customer.FullName);
Console.WriteLine("Customer Address: " + customer.Address);
Console.WriteLine();
}
}
但是我在foreach声明中得到了这个错误:
像我说的那样,这是我第一次使用List,maby我不明白吧?谁能帮帮我吗?非静态字段,方法或属性'AddCustomerList.Customer.Customers.get'
需要对象引用
答案 0 :(得分:5)
问题是您尝试从static方法中访问非静态属性Customers
。
我怀疑你想要的是这个:
public void AllCustomers()
{
// ...
(即摆脱静态修饰符)
另外,您也可以将customers
和Customers
成员都设为静态:
private static List<Customer> customers = new List<Customer>();
public static List<Customer> Customers
{
get { return customers; }
set { customers = value; }
}
答案 1 :(得分:3)
失败是因为AllCustomers()
是静态方法。从中删除'static',它应该按照您的预期进行编译和工作。
答案 2 :(得分:2)
作为Gonzalo says,您需要从static
方法中删除AllCustomers
。
或者,您可以将客户列表传递给AllCustomers方法,该方法可以继续保持静态。
public static void AllCustomers(List<Customer> customers)
但是,我很好奇为什么你的客户列表里面客户类 - 这是因为你的客户有他们自己的客户?