接近和编码多个类的最佳方式

时间:2018-05-15 03:57:18

标签: c#

我有多个相互交互的类,我让它们正常工作,并且正确地进行了diplaying但我无法帮助,但我觉得这是一种最佳,更清洁甚至更简单的编码方式。功能很简单,它显示产品名称,待售时间和成本。

public class Item
    {    
    private string name;
    private int duration;
    private int cost

    public Item(string n, int d, double c)
            {
                Name = n;
                Duration = d;
                Cost = c;
            }
    }

第二课:

class Inventory
{

   private List<Item> item = new List<item>();

   public void AddItem(Item p) // Add item
            {
                item.Add(p);
            }

   public Item this[int i]
        {
            get
            {
               return item[i];
            }
            set
            {
               item[i] = value;
            }
        }
}

在我的Form.cs中,我得到了这个:

private void Form1_Load(object sender, EventArgs e)
{
            {
                var myInventory = new Inventory();
                var i1 = new Item("iPod", 200, 9);
                var i2 = new Item("Samsung", 700, 5);
                var i3 = new Item("Nokia", 100, 17);
                var i4 = new Item("Motorolla", 50, 50);

                myInventory.AddItem(i1);
                myInventory.AddItem(i2);
                myInventory.AddItem(i3);
                myInventory.AddItem(i4);
                lstProduct.Items.Add(myInventory[0]); // Add items into listbox via indexing
                lstProduct.Items.Add(myInventory[1]);
                lstProduct.Items.Add(myInventory[2]);
                lstProduct.Items.Add(myInventory[3]);

            }

全新编程,所以我还在学习。我主要关注我的Form.cs以及我对其进行编码的方式,但如果您对如何编写我所制作的其他课程有更好的了解,我欢迎任何反馈/建议。

谢谢!

2 个答案:

答案 0 :(得分:1)

这是你的代码

using System;
using System.Collections.Generic;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var myInventory = new Inventory();

            var i1 = new Item{name = "iPod", cost = 200,duration = 9};
            var i2 = new Item{name = "Samsung",cost = 700,duration = 5};
            var i3 = new Item{name = "Nokia", cost = 100, duration = 17};
            var i4 = new Item{name = "Motorolla",cost = 50, duration = 50};

            myInventory.InventoryItems.Add(i1);
            myInventory.InventoryItems.Add(i2);
            myInventory.InventoryItems.Add(i3);
            myInventory.InventoryItems.Add(i4);
            foreach (var inventoryItem in myInventory.InventoryItems)
            {
                lstProduct.Items.Add(inventoryItem)
            }
        }
    }
}



public class Item
{
    public string name { get; set; }
    public int duration { get; set; }
    public int cost { get; set; }

}

class Inventory
{
    public List<Item> InventoryItems { get; set; }
}

答案 1 :(得分:0)

如果您想稍后访问它,请使用public(auto)属性,而不仅仅是私有字段。

aggregation

不要缩写变量名称。让它易于阅读。

对于多个项目,请使用“ s

结束变量名称

覆盖ToString(),以便您可以轻松地显示对象实例。

// for class Item
public string Name { get; private set; }
public int Duration { get; private set; }
public int Cost { get; private set; }

// for class Inventory
public List<Item> Items { get; private set; } = new List<Item>();

使用循环来迭代

// For Class Item
public override string ToString()
{
   return $"Name={Name}, Duration={Duration}, Cost={Cost}";
}

// For Inventory Item
public override string ToString()
{
    return string.Join(Environment.NewLine, Items);
}