我有多个相互交互的类,我让它们正常工作,并且正确地进行了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以及我对其进行编码的方式,但如果您对如何编写我所制作的其他课程有更好的了解,我欢迎任何反馈/建议。
谢谢!
答案 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);
}