For循环:
/// <summary>
/// 获取列表中最靠近给定数值的右侧数位置(多线程)
/// </summary>
private int GetNearestRightNumInList(List<int> _list, int _num)
{
int index = -1;
int _right = int.MaxValue;
System.Threading.Tasks.Parallel.For(0, _list.Count, (_n) =>
{
if (_num <= _list[_n])
{
if (_list[_n] < _right)
{
_right = _list[_n];
index = _n;
}
}
});
return index;
}
ForEach循环:
/// <summary>
/// 获取列表中最靠近给定数值的右侧的值(多线程)
/// </summary>
private int GetNearestRightNumInList(List<int> _list, int _num)
{
int _right = int.MaxValue;
Parallel.ForEach(_list, _n =>
{
if (_num <= _n) { if (_n < _right) { _right = _n; } }
});
return _right > _list.Last() ? -1 : _right;
}
ForEach 是比 For 要快的