Browse Source

CollectionUtility 增加 With 方法。

master
王厅 1 week ago
parent
commit
2eadc57a7b
  1. 30
      Apewer/CollectionUtility.cs

30
Apewer/CollectionUtility.cs

@ -976,6 +976,36 @@ namespace Apewer
#endregion
#region With
/// <summary>Array 实例的 with() 方法是使用方括号表示法修改指定索引值的复制方法版本。它会返回一个新数组,其指定索引处的值会被新值替换。</summary>
/// <param name="array"></param>
/// <param name="index">要修改的数组索引(从 0 开始)。负数索引会从数组末尾开始计数——即当 index &lt; 0 时,会使用 index + array.length。</param>
/// <param name="value">要分配给指定索引的任何值。</param>
/// <returns>一个全新的数组,其中 index 索引处的元素被替换为 value。</returns>
/// <exception cref="ArgumentNullException" />
public static T[] With<T>(this T[] array, int index, T value)
{
if (array == null) throw new ArgumentNullException(nameof(array));
// 数组长度
var length = array.Length;
if (array.Length < 1) throw new ArgumentOutOfRangeException(nameof(index));
// 要修改的位置
var offset = index < 0 ? index + length : index;
if (offset >= length || offset < 0) throw new ArgumentOutOfRangeException(nameof(index));
// 生成新数组
var result = new T[array.Length];
for (var i = 0; i < result.Length; i++) result[i] = array[i];
result[index] = value;
return result;
}
#endregion
}
}

Loading…
Cancel
Save