非静态字段,方法或属性需要对象引用

这是我第一次与Lists合作,而且我似乎没有做到正确。 我有一个Customer类,其客户列表作为Customer类中的属性(可以这样做吗?)

public class Customer { private List customers = new List(); public List 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声明中得到了这个错误:

非静态字段,方法或属性’AddCustomerList.Customer.Customers.get’需要对象引用

就像我说的,这是我第一次使用List,maby我不明白吧? 谁能帮帮我吗?

问题是您尝试从静态方法中访问非静态属性Customers

我怀疑你想要的是这个:

 public void AllCustomers() { // ... 

(即摆脱静态修饰符)

或者,您也可以使customersCustomers成员也是静态的:

 private static List customers = new List(); public static List Customers { get { return customers; } set { customers = value; } } 

它失败,因为AllCustomers()是一个静态方法。 从中删除’静态’,它应该按照您的预期编译和工作。

正如Gonzalo所说 ,你需要从AllCustomers方法中删除static

或者,您可以将客户列表传递给AllCustomers方法,该方法可以继续保持静态。

 public static void AllCustomers(List customers) 

但是,我很好奇为什么你在客户类中有客户名单 – 这是因为你的客户有他们自己的客户?