2016-04-10 47 views
0

我有一個對象叫做product,對象叫做products將對象列表存儲在另一個對象中的最佳做法是什麼

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

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

在對象products財產product我想存儲的多種產品。這我怎麼做了它在一個小的原型解決方案:

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 ...
  • 產品的集合應該是一個複數標識符,並且屬性是pascal-0123:。
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(); 
    }); 
} 

然而,編寫代碼的最佳做法應該是:

什麼是對我來說,維護和理解這個代碼最簡單的方法?

所以如果你在你的問題中編寫代碼的方式是什麼讓你感覺舒服,那麼一定要這樣做。但是,我建議您遵循MSDN爲Capitalization Conventions制定的約定。

相關問題