Пример #1
0
        /// <summary>
        /// 获取第一个匹配值
        /// </summary>
        /// <param name="array">数组数据</param>
        /// <param name="isValue">数据匹配器</param>
        /// <param name="index">起始位置</param>
        /// <returns>第一个匹配值,失败为default(ulong)</returns>
        public static ulong firstOrDefault(this SubArray <ulong> array, Func <ulong, bool> isValue, int index)
        {
            if ((uint)index < (uint)array.Length)
            {
                fixed(ulong *valueFixed = array.GetFixedBuffer())
                {
                    ulong *valueIndex = FixedArray.IndexOf(valueFixed + array.Start + index, array.Length - index, isValue);

                    if (valueIndex != null)
                    {
                        return(*valueIndex);
                    }
                }
            }
            return(default(ulong));
        }
Пример #2
0
        /// <summary>
        /// 替换数据
        /// </summary>
        /// <param name="array">数组数据</param>
        /// <param name="value">新值</param>
        /// <param name="isValue">数据匹配器</param>
        public static SubArray <ulong> replaceFirst(this SubArray <ulong> array, ulong value, Func <ulong, bool> isValue)
        {
            if (array.Length != 0)
            {
                fixed(ulong *valueFixed = array.GetFixedBuffer())
                {
                    ulong *valueIndex = FixedArray.IndexOf(valueFixed + array.Start, array.Length, isValue);

                    if (valueIndex != null)
                    {
                        *valueIndex = value;
                    }
                }
            }
            return(array);
        }
Пример #3
0
        /// <summary>
        /// 获取匹配数据位置
        /// </summary>
        /// <param name="array">数据数组</param>
        /// <param name="isValue">数据匹配器</param>
        /// <returns>匹配位置,失败为-1</returns>
        public static int indexOf(this SubArray <ulong> array, Func <ulong, bool> isValue)
        {
            if (array.Length != 0)
            {
                fixed(ulong *valueFixed = array.GetFixedBuffer())
                {
                    ulong *start = valueFixed + array.Start, index = FixedArray.IndexOf(start, array.Length, isValue);

                    if (index != null)
                    {
                        return((int)(index - valueFixed));
                    }
                }
            }
            return(-1);
        }
Пример #4
0
        /// <summary>
        /// 获取匹配数据位置
        /// </summary>
        /// <param name="array">数组数据</param>
        /// <param name="value">匹配数据</param>
        /// <returns>匹配位置,失败为-1</returns>
        public static int indexOf(this LeftArray <ulong> array, ulong value)
        {
            if (array.Length != 0)
            {
                fixed(ulong *valueFixed = array.GetFixedBuffer())
                {
                    ulong *index = FixedArray.IndexOf(valueFixed, array.Length, value);

                    if (index != null)
                    {
                        return((int)(index - valueFixed));
                    }
                }
            }
            return(-1);
        }