C# 排序 匿名函数
之前看别人的博客看到这个排序方法,就拿来试了下,
因为要给线程传递参数我先用了ParameterizedThreadStart传参数
结果是正确的。
后来我改用匿名函数,就不用特意为传参数单独写个结构或者类了,
但是问题是,现在我传进去一个整数数组,老报错说IndexOutOfRangeException
但是调试执行却没有错,不过结果不是我想要的。
为什么i的值会是9呢,我明明让i<sortThread.Length.
希望帮忙解答以下,谢谢。
以下是代码:
private void DoSort()
{
int[] ints = { 1, 4, 7, 3, 8, 9, 2, 6, 5 };
Thread[] sortThreads = new Thread[ints.Length];
for (int i = 0; i < sortThreads.Length; i++)
{
//sortThreads[i] = new Thread(new ParameterizedThreadStart(run));
//sortThreads[i].Start(ints[i]);
sortThreads[i] = new Thread(new ThreadStart(delegate { run(ints[i]); }));
sortThreads[i].Start();
}
}
private void run(int ms)
{
try
{
Thread.Sleep(ms * 1000 + 10);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.WriteLine(ms);
}
------解决方案--------------------sortThreads[i] = new Thread(new ThreadStart(delegate { run(ints[i]); }));