我有一个列表List<int> Test
,为了进行测试,我需要制作基本线程,一个用于填充,第二个用于随机显示相同的项目。因此,任务是填充并在控制台中随机显示结果。当然,问题是我的显示方法将该列表作为参数,因此同样的实例可能是要解决的问题。这是我的代码,它只是填充然后显示项目:
static void Main(string[] args)
{
List<int> testList = new List<int>();
System.Threading.Thread.Sleep(300);
for (int y = 0; y < 50; y++)
{
testList.Add(y);
Console.WriteLine(string.Format("Added item {0}!", y));
};
Thread testThread1 = new Thread(() => FillList(testList));
testThread1.Start();
Console.ReadKey();
}
public static void FillList(List<int> pTestList)
{
foreach(int x in pTestList)
{
System.Threading.Thread.Sleep(1000);
Console.WriteLine(x.ToString());
}
}
更新
我想在我的控制台中显示几个&#34;已添加项目&#34;和物品。所以要从图像中混合第一部分和第二部分。
答案 0 :(得分:1)
我会使用Struct
或object
,其中包含变量Position
。
然后代码看起来像:
static void Main(string[] args)
{
List<int> testList = new List<int>();
System.Threading.Thread.Sleep(300);
Random rng = new Random(123);
for (int y = 0; y < 50; y++)
{
testList.Add(y);
Console.WriteLine(string.Format("Added item {0}!", y));
};
Thread testThread1 = new Thread(() => FillList(testList));
testThread1.Start();
Console.ReadKey();
}
public static void FillList(List<int> pTestList)
{
List<Number> testList = new List<Number>();
Random rng = new Random(123);
foreach (var item in pTestList)
{
testList.Add(new Number() { IntNumber = item, Position = rng.Next() });
}
foreach (Number x in testList.OrderBy(x => x.Position))
{
System.Threading.Thread.Sleep(1000);
Console.WriteLine(x.IntNumber);
}
}
public struct Number
{
public int Position { get; set; }
public int IntNumber { get; set; }
}