2016-07-30 6 views
0

私はこの製品リストを持っています。C#別のクラスのリストへの参照を作成するにはどうすればよいですか?

今、私がしたいことは、このリストをforeachを使って別のクラスにループすることです。

ループするクラスのAllProductsへの参照を作成するにはどうすればよいですか?

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


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

答えて

1
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(Do not Repeat Yourself)の原則に違反しています。 – Kapol

+0

もちろん、私はちょうどそこにこの問題を解決する方法を示すためにそれを入れました。 OPは、プロパティまたはメソッドを使用する決定を下す必要があります。 –

+1

すべて右、+1 :-) – Kapol

0

あなたはそのリストを持っているクラスのメソッドを作成し、それに名前を付けるようなもの「showProductsを()」とConsole.WriteLineをとし、あなたのメインクラスの呼び出し、そのメソッドに反復場合、それが良いでしょう。

+0

のように行うことができます!うん、大丈夫、私はそれをやった: 公開リスト GetProducts() { リターンAllProducts; } しかし、私はまだメインでAllProdcutsを反復処理する必要があります。他の理由でこのメソッドでは実行できません。 – Linexxlol

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

あなたがhiこの

関連する問題