diff --git a/Apewer/CollectionUtility.cs b/Apewer/CollectionUtility.cs
index 7ad3b93..fb917c1 100644
--- a/Apewer/CollectionUtility.cs
+++ b/Apewer/CollectionUtility.cs
@@ -976,6 +976,36 @@ namespace Apewer
#endregion
+ #region With
+
+ /// Array 实例的 with() 方法是使用方括号表示法修改指定索引值的复制方法版本。它会返回一个新数组,其指定索引处的值会被新值替换。
+ ///
+ /// 要修改的数组索引(从 0 开始)。负数索引会从数组末尾开始计数——即当 index < 0 时,会使用 index + array.length。
+ /// 要分配给指定索引的任何值。
+ /// 一个全新的数组,其中 index 索引处的元素被替换为 value。
+ ///
+ public static T[] With(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
+
}
}