c# - 非静态字段、方法或属性需要对象引用

标签 c#

这是我第一次使用列表,但我似乎没有做对。我有一个 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);

现在我需要显示此列表中的客户。我已经向 Customer 类添加了一个 AllCustomers 函数,如下所示:

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 语句中收到此错误:

An object reference is required for the non-static field, method, or property 'AddCustomerList.Customer.Customers.get'

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

最佳答案

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

我怀疑你想要的是这个:

public void AllCustomers()
{
    // ...

(即摆脱静态修饰符)

或者,您也可以将 customersCustomers 成员设为静态:

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

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

关于c# - 非静态字段、方法或属性需要对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3775721/

相关文章:

c# - 默认通过引用传递不可变值类型

c# - 在 C# 中将 ref 设置为成员字段

c# - 如何使用 C#.Net 检索我的公共(public) IP 地址?

c# - 数组不会保存在 session 变量中

c# - LINQ - SkipWhile 坏了吗?

c# - 希伯来语和符号的正则表达式

c# - 如何将 DB2 时间戳转换为日期时间?

c# - Queue<T> 线程安全 : one writer, 一个读者

c# - DisplayNameFor() 来自模型中的 List<Object>

c# - 如何从 Excel 工作表生成图表?