繁体   English   中英

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

[英]An object reference is required for the non-static field, method, or property

这是我第一次与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声明中得到了这个错误:

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

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

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

我怀疑你想要的是这个:

public void AllCustomers()
{
    // ...

(即摆脱静态修饰符)

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

private static List<Customer> customers = new List<Customer>();

public static List<Customer> Customers
{
    get { return customers; }
    set { customers = value; }
}

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

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

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

public static void AllCustomers(List<Customer> customers)

不过,我很好奇,为什么你的客户类的客户名单-这是因为你的客户有自己的客户?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM