国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

[C#]Array添加擴展

2019-11-14 16:31:39
字體:
來源:轉載
供稿:網友

眾所周知,Array 一旦定義好,譬如四個長度,當需要再往里面添加元素的時候,需要Array.Resize一下才可以,為了提高代碼復用,所以索性封裝下,方便使用,代碼如下:

        /// <summary>        /// Array添加        /// </summary>        /// <typeparam name="T">泛型</typeparam>        /// <param name="array">Array</param>        /// <param name="item">需要添加項</param>        /// <returns>返回新的Array</returns>        public static T[] Add<T>(this T[] array, T item)        {            int _count = array.Length;            Array.Resize<T>(ref array, _count + 1);            array[_count] = item;            return array;        }        /// <summary>        ///  Array添加        /// </summary>        /// <typeparam name="T">泛型</typeparam>        /// <param name="sourceArray">Array</param>        /// <param name="addArray">Array</param>        /// <returns>返回新的Array</returns>        public static T[] AddRange<T>(this T[] sourceArray, T[] addArray)        {            int _count = sourceArray.Length;            int _addCount = addArray.Length;            Array.Resize<T>(ref sourceArray, _count + _addCount);            //foreach (T t in addArray)            //{            //    sourceArray[_count] = t;            //    _count++;            //}            addArray.CopyTo(sourceArray, _count);            return sourceArray;        }

測試代碼:

        [TestMethod()]        public void AddTest()        {            int[] _source = new int[3] { 1, 2, 3 };            int[] _expected = new int[4] { 1, 2, 3, 4 };            _source = _source.Add(4);            CollectionAssert.AreEqual(_source, _expected);        }        [TestMethod()]        public void AddRangeTest()        {            int[] _source = new int[3] { 1, 2, 3 };            int[] _expected = new int[6] { 1, 2, 3, 4, 5, 6 };            _source = _source.AddRange(new int[3] { 4, 5, 6 });            CollectionAssert.AreEqual(_source, _expected);        }

測試結果:

image

代碼邏輯很簡單,無需說明,只是方面后續使用而已,這是基于.NET 2.0的寫法,大家都知道,在.NET 3.0+有了LINQ出現,實現此效果更為簡單方面,代碼如下:

       /// <summary>        /// Array添加        /// </summary>        /// <typeparam name="T">泛型</typeparam>        /// <param name="array">Array</param>        /// <param name="item">需要添加項</param>        /// <returns>返回新的Array</returns>        public static T[] Add<T>(this T[] array, T item)        {            array = 

array.Concat

<T>(new T[1] { item }).ToArray();            return array;        }        /// <summary>        ///  Array添加        /// </summary>        /// <typeparam name="T">泛型</typeparam>        /// <param name="sourceArray">Array</param>        /// <param name="addArray">Array</param>        /// <returns>返回新的Array</returns>        public static T[] AddRange<T>(this T[] sourceArray, T[] addArray)        {            sourceArray = 

sourceArray.Concat

<T>(addArray).ToArray();            return sourceArray;        }同樣的測試代碼:
        [TestMethod()]        public void AddTest()        {            int[] _source = new int[3] { 1, 2, 3 };            int[] _expected = new int[4] { 1, 2, 3, 4 };            _source = _source.Add(4);            CollectionAssert.AreEqual(_source, _expected);        }        [TestMethod()]        public void AddRangeTest()        {            int[] _source = new int[3] { 1, 2, 3 };            int[] _expected = new int[6] { 1, 2, 3, 4, 5, 6 };            _source = _source.AddRange(new int[3] { 4, 5, 6 });            CollectionAssert.AreEqual(_source, _expected);        }

測試結果:

image

希望有所幫助!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 玉山县| 南部县| 长乐市| 崇阳县| 黔江区| 襄樊市| 晋中市| 德阳市| 凤山县| 金山区| 莎车县| 屯留县| 大港区| 乐都县| 昌乐县| 海伦市| 阿城市| 柏乡县| 安图县| 资中县| 通城县| 江川县| 汝城县| 高阳县| 铁力市| 蒙城县| 昆明市| 孟州市| 新田县| 娄底市| 自贡市| 牟定县| 赫章县| 定结县| 咸阳市| 巴林右旗| 缙云县| 保定市| 兴山县| 芜湖县| 静宁县|