我试图在两个列表对象之间进行随机交换。
到目前为止我得到了什么:
public class Inventory
{
private List<Item> items = new List<Item>();
public List<Item> Items { get; set; }
public Inventory()
{
items = new List<Item>()
{
new Item("Ipod"),
new Item("Samsung"),
new Item("Motorolla"),
new Item("Huawei")
};
}
}
在Form_load
下
private void Form1_Load(object sender, EventArgs e)
{
// Both objects are initiated with the default values from Inventory.cs
var myInv = new Inventory();
lstBox.Items.Add(myInv);
var myInv2 = new Inventory();
lstBox.Items.Add(myInv);
}
因此,一旦我启动了随机交换,myInv1
中的随机对象将与myInv2
交换,然后来自myInv2
的一个对象将填充myInv1
中的该位置}。
目前,这是我能描述我的挑战的最佳方式 如果有什么事情看起来很混乱,我会很乐意尽快发表评论。
谢谢
答案 0 :(得分:1)
您可以使用Random class。
我清除了与原始问题完全无关的部分代码“如何在两个列表中随机交换两个项目?”之后,使用Random
,我们随机选择每个列表中的项目并进行交换。
public void DoRandomSwap()
{
var myInv1 = new Inventory();
var myInv2 = new Inventory();
Random rnd = new Random();
int myInv1Random = rnd.Next(myInv1.Items.Count);
int myInv2Random = rnd.Next(myInv2.Items.Count);
Item tempItem1 = myInv1.Items[myInv1Random];
Item tempItem2 = myInv2.Items[myInv2Random];
myInv1.Items[myInv1Random] = tempItem2;
myInv2.Items[myInv2Random] = tempItem1;
}
此外,我清理了您的Inventory
课程,因为您似乎没有正确初始化您的列表:
public class Inventory
{
public List<Item> Items { get; set; }
public Inventory()
{
Items = new List<Item>()
{
new Item("Ipod"),
new Item("Samsung"),
new Item("Motorolla"),
new Item("Huawei")
};
}
}
最后,您没有包含Item
的代码,所以我根据您的使用方式添加了一个简单的版本:
public class Item
{
public string itemName { get; set; }
public Item(string itemName)
{
this.itemName = itemName;
}
}
希望这有帮助!