/// <summary> /// Core接続配列に指定した配列のデータを設定する /// </summary> /// <typeparam name="TElement">配列に格納される要素の型</typeparam> /// <param name="obj">データを設定するCore接続配列のインデスタンス</param> /// <param name="array">設定するデータとなる配列</param> /// <exception cref="ArgumentNullException"><paramref name="obj"/>または<paramref name="array"/>がnull</exception> public static void FromArray <TElement>(this IArray <TElement> obj, TElement[] array) where TElement : unmanaged { if (obj == null) { throw new ArgumentNullException(nameof(obj), "引数がnullです"); } if (array == null) { throw new ArgumentNullException(nameof(array), "引数がnullです"); } if (obj.Count < array.Length) { obj.Resize(array.Length); } unsafe { fixed(TElement *ptr = array) { obj.Assign(new IntPtr(ptr), array.Length); } } }
/// <summary> /// Core接続配列に指定した配列のデータを設定します。 /// </summary> /// <typeparam name="TElement">配列に格納される要素の型</typeparam> /// <param name="obj">データを設定するCore接続配列のインデスタンス</param> /// <param name="span">設定するデータとなる配列</param> /// <exception cref="ArgumentNullException"><paramref name="obj"/>または<paramref name="span"/>がnull</exception> internal static void FromSpan <TElement>(this IArray <TElement> obj, ReadOnlySpan <TElement> span) where TElement : unmanaged { if (obj == null) { throw new ArgumentNullException(nameof(obj), "引数がnullです"); } obj.Resize(span.Length); if (span.Length == 0) { return; } unsafe { fixed(TElement *ptr = span) { obj.Assign(new IntPtr(ptr), span.Length); } } }