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

首頁 > 編程 > C# > 正文

C#實現Array添加擴展實例

2020-01-24 02:35:43
字體:
來源:轉載
供稿:網友

一般學過C#的都知道,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);}

測試結果:

代碼邏輯很簡單,無需說明,只是方面后續使用而已,這是基于.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);}

測試結果:

希望本文能對大家有所幫助!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临武县| 崇州市| 洪雅县| 喜德县| 新兴县| 崇州市| 新兴县| 海宁市| 板桥市| 普兰店市| 大田县| 扶余县| 南宁市| 绩溪县| 乐亭县| 香河县| 金寨县| 册亨县| 湘潭市| 和平县| 屏山县| 罗甸县| 保靖县| 清镇市| 遂溪县| 安溪县| 平凉市| 外汇| 达孜县| 轮台县| 新余市| 石嘴山市| 石家庄市| 五指山市| 中宁县| 银川市| 攀枝花市| 通山县| 阳泉市| 京山县| 布拖县|