| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -976,6 +976,36 @@ namespace Apewer | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        #endregion
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        #region With
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        /// <summary>Array 实例的 with() 方法是使用方括号表示法修改指定索引值的复制方法版本。它会返回一个新数组,其指定索引处的值会被新值替换。</summary>
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        /// <param name="array"></param>
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        /// <param name="index">要修改的数组索引(从 0 开始)。负数索引会从数组末尾开始计数——即当 index < 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
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
					 | 
				
				 | 
				
					
  |