C#如何创建从另一个类的列表的引用?

问题描述:

所以我有这个产品清单。C#如何创建从另一个类的列表的引用?

现在,我想要做的是在另一个类的foreach循环这个列表。

如何在我想要循环的类中对AllProducts进行引用?

public List<Product> AllProducts; 
AllProducts = new List<Product>(); 


foreach (product p in AllProducts) 
{ 
    Console.WriteLine(p); 
} 

public class A 
{ 
    //Property 
    //must be set somewhere (e.g. constructor) 
    public List<Product> Products { get; private set; } 

    //Method 
    public List<Product> GetProducts() 
    { 
     //return list of products 
    } 
} 

public class B 
{ 
    public void Display() 
    { 
     var a = new A(); 
     foreach (var product in a.Products /*OR a.GetProducts()*/) 
     { 
      Console.WriteLine(product); 
     } 
    } 

} 
+0

您是否建议同时拥有*既*属性和方法?如果是的话,那就是糟糕的设计,违反了DRY(不要重复自己)原则。 – Kapol

+0

当然不是,我只是把它放在那里展示可能的方法来解决这个问题。 OP应该做出使用财产或方法的决定。 –

+1

好吧,+1 :-) – Kapol

如果您在类中的方法是有一个列表并将其命名为类似“展示Products()”,并为Console.WriteLine,并在你的主类调用该方法重复这将是更好的。

+0

喜!是的好吧,我已经这样做了: public list GetProducts() { return AllProducts; } 但我仍然需要遍历所有主要的AllProdcuts我不能在其他原因的方法。 – Linexxlol

public List<Product> fillProduct() 
    { 
     List<Product> AllProducts = new List<Product>(); 
     //fill 
    } 
    private void btnAdd_Click(object sender, EventArgs e) 
    { 
     foreach (product p in fillProduct()) 
     { 
      Console.WriteLine(p); 
     } 
    } 

你可以这样做