Se requiere una referencia de objeto para el campo, método o propiedad no estático

Esta es la primera vez que trabajo con Lists y no parece estar haciendo las cosas bien. Tengo una clase de clientes con una lista de clientes como propiedad en la clase de clientes (¿se puede hacer de esta manera?)

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

En mi progtwig, agrego a esta lista de clientes de esta manera:

 Customer C = new Customer(); Customer.InputCustomer(C); C.Customers.Add(C); 

Ahora necesito mostrarles a los clientes en esta lista. He agregado una función AllCustomers a la clase del cliente de esta manera:

 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(); } } 

Pero estoy obteniendo este error en la statement foreach:

Se requiere una referencia de objeto para el campo, el método o la propiedad no estáticos ‘AddCustomerList.Customer.Customers.get’

Como dije, esta es la primera vez que uso List, maby no lo entiendo, ¿verdad? ¿Alguien puede ayudarme por favor?

El problema es que intenta acceder a los Customers propiedades no estáticas desde un método estático .

Sospecho que lo que quieres es esto:

 public void AllCustomers() { // ... 

(es decir, deshacerse del modificador estático)

Alternativamente, puede hacer que tanto los customers como los miembros de los Customers permanezcan estáticos:

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

No funciona porque AllCustomers() es un método estático. Elimine la “estática” de la misma y debería comstackrse y funcionar como espera.

Como dice Gonzalo , debes eliminar la static del método AllCustomers .

Alternativamente, podría pasar la lista de clientes al método AllCustomers, que podría seguir siendo estático.

 public static void AllCustomers(List customers) 

Sin embargo, tengo curiosidad por saber por qué tiene la lista de Clientes dentro de la clase de clientes: ¿esto se debe a que sus clientes tienen sus propios clientes?