时间:2021-05-20
一般学过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;}同样的测试代码:
测试结果:
希望本文能对大家有所帮助!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了C#冒泡法排序算法。分享给大家供大家参考。具体实现方法如下:staticvoidBubbleSort(IComparable[]array){in
本文实例讲述了C#实现listviewGroup收缩扩展的方法。分享给大家供大家参考,具体如下:1、本实例是完善了codeprofect上面charju老师“A
本文实例讲述了JS扩展方法实现技巧。分享给大家供大家参考。具体分析如下:JS扩展方法与C#的扩展方法非常相似,也是可以链式调用的,也是通过对某个类的扩展写法来实
本文实例讲述了C#使用listView增删操作的方法。分享给大家供大家参考。具体分析如下:应用场景:C#中使用listView控件,实现动态添加,选中删除等操作
本文实例讲述了C#实现AddRange为数组添加多个元素的方法。分享给大家供大家参考。具体实现方法如下:ArrayListab=newArrayList();a