Browse Source

CollectionUtility:IEnumerable<T>.Map 扩展方法增加重载,提供 index 参数。

master
王厅 1 month ago
parent
commit
21df269419
  1. 18
      Apewer/CollectionUtility.cs

18
Apewer/CollectionUtility.cs

@ -731,13 +731,27 @@ namespace Apewer
if (selector == null) throw new ArgumentNullException(nameof(selector));
if (collection == null) return new TOut[0];
return Map(collection, (item, index) => selector.Invoke(item));
}
/// <summary>遍历集合,转换元素,生成新数组。</summary>
/// <typeparam name="TIn">输入的元素类型。</typeparam>
/// <typeparam name="TOut">输出的元素类型。</typeparam>
/// <param name="collection">要遍历的集合。</param>
/// <param name="selector">转换程序。</param>
/// <returns>新数组的元素类型。</returns>
public static TOut[] Map<TIn, TOut>(this IEnumerable<TIn> collection, Func<TIn, int, TOut> selector)
{
if (selector == null) throw new ArgumentNullException(nameof(selector));
if (collection == null) return new TOut[0];
if (collection is TIn[] array)
{
var count = array.Length;
var result = new TOut[count];
for (var i = 0; i < count; i++)
{
result[i] = selector.Invoke(array[i]);
result[i] = selector.Invoke(array[i], i);
}
return result;
}
@ -753,7 +767,7 @@ namespace Apewer
capacity += 1024;
list.Capacity += capacity;
}
list.Add(selector.Invoke(item));
list.Add(selector.Invoke(item, count));
count += 1;
}
return list.ToArray();

Loading…
Cancel
Save