Пример #1
0
        /// <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);
                }
            }
        }
Пример #2
0
        /// <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);
                }
            }
        }