2016-04-10 10 views
0

私はproductというオブジェクトとproductsというオブジェクトを持っています。私は複数の製品を保存するproductオブジェクトproductsプロパティでオブジェクトのリストを別のオブジェクトに保存するのがベストプラクティス

class product 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

class products 
{ 
    public List<product> product { get; set; } 
} 

。これは小さなプロトタイプソリューションでどのようにしたのですか?

static void Main(string[] args) 
    { 
     products productlist = new products(); 
     List<product> listofproduct = new List<product>(); 

     for (int i = 0; i < 10; i++) 
     { 
      product p = new product(); 
      p.Id = i; 
      p.Name = "product with id = " + i.ToString(); 

      listofproduct.Add(p); 
     } 

     productlist.product = listofproduct; 

     foreach (product prod in productlist.product) 
     { 
      Console.WriteLine(prod.Name); 
     } 

     Console.ReadKey(); 
    } 
} 

これはこれを解決する良い方法ですか?あるいは、オブジェクト指向プログラミングの別の方法でやっていますか?あなたはこのようにコードを簡素化することができ

+1

私はそれがhttp://codereview.stackexchange.com/に属しているため、オフトピックとして、この質問を閉じるために投票しています。 –

答えて

0

productlist.product = Enumerable.Range(0, 10) 
           .Select 
           (
            id => new product 
            { 
             id = id, 
             name = $"product with id = {id}" 
            } 
           ).ToList(); 

まあ、実際には多くの点で同じコードを表現することができますが、あなたはすでにあなたのコードで実装しましたforループは結構です。あなたには、いくつかのアドバイスをしたい場合は

には、.NETのコーディング規約に従ってください:パスカル・ケーシングと

  • クラス:Product
  • キャメルケースの変数:productListlistOfProduct ...
  • プロダクトのコレクションは複数の識別子で、プロパティはパスカルケースになります(Products)。
1
struct Product 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 

    public Product(int id, string name) 
    { 
    this.Id=id; 
    this.Name=name; 
    } 
    public void WriteInfo() 
    { 
     Console.WriteLine("Id: {0}, Id); 
     Console WriteLine("Name: {0}", Name) 
    } 

} 

static void Main(string[] args) 
    { 
     var productList=new LinkedList<Product>; 
     productList.AddLast(new Product(1,Apple)); 
     productList.AddLast(new Product(2,Banana)); 

     foreach(var product in productList) 
     { 
      product.WriteInfo() 
     } 
    } 
+0

私はこれに 'struct'を使います。いいえ、私はそれを使用しません。 –

1

あなたがLINQを使用して、あなたの現在の構造を維持したくない場合は、あなたのループ内での完全なインスタンスを作成する必要がある、とlistofproductの必要性を排除することができます。

for (int i = 0; i < 10; i++) { 
    productlist.product.Add(new product { 
     p.Id = i; 
     p.Name = "product with id = " + i.ToString(); 
    }); 
} 

しかし、コードを記述するためのベストプラクティスは次のようになります。

私はこのコードを維持し、理解するための最も簡単な方法は何ですか?

あなたがあなたの質問にコードを書いた方法が、あなたが快適に感じるものがあれば、是非それをしてください。ただし、強くは、Capitalization ConventionsのMSDNに規定されている規則に従うことをお勧めします。

関連する問題