+ public void SetValue(object value, long index)
+ {
+ if (index > int.MaxValue || index < int.MinValue)
+ throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_HugeArrayNotSupported);
+
+ SetValue(value, (int)index);
+ }
+
+ public void SetValue(object value, long index1, long index2)
+ {
+ if (index1 > int.MaxValue || index1 < int.MinValue)
+ throw new ArgumentOutOfRangeException(nameof(index1), SR.ArgumentOutOfRange_HugeArrayNotSupported);
+ if (index2 > int.MaxValue || index2 < int.MinValue)
+ throw new ArgumentOutOfRangeException(nameof(index2), SR.ArgumentOutOfRange_HugeArrayNotSupported);
+
+ SetValue(value, (int)index1, (int)index2);
+ }
+
+ public void SetValue(object value, long index1, long index2, long index3)
+ {
+ if (index1 > int.MaxValue || index1 < int.MinValue)
+ throw new ArgumentOutOfRangeException(nameof(index1), SR.ArgumentOutOfRange_HugeArrayNotSupported);
+ if (index2 > int.MaxValue || index2 < int.MinValue)
+ throw new ArgumentOutOfRangeException(nameof(index2), SR.ArgumentOutOfRange_HugeArrayNotSupported);
+ if (index3 > int.MaxValue || index3 < int.MinValue)
+ throw new ArgumentOutOfRangeException(nameof(index3), SR.ArgumentOutOfRange_HugeArrayNotSupported);
+
+ SetValue(value, (int)index1, (int)index2, (int)index3);
+ }
+
+ public void SetValue(object value, params long[] indices)
+ {
+ if (indices == null)
+ throw new ArgumentNullException(nameof(indices));
+ if (Rank != indices.Length)
+ throw new ArgumentException(SR.Arg_RankIndices);
+
+ int[] intIndices = new int[indices.Length];
+
+ for (int i = 0; i < indices.Length; ++i)
+ {
+ long index = indices[i];
+ if (index > int.MaxValue || index < int.MinValue)
+ throw new ArgumentOutOfRangeException("index", SR.ArgumentOutOfRange_HugeArrayNotSupported);
+ intIndices[i] = (int)index;
+ }
+
+ SetValue(value, intIndices);
+ }
+