C#實(shí)現(xiàn)Array添加擴(kuò)展實(shí)例
一般學(xué)過C#的都知道,Array 一旦定義好,比如四個(gè)長度,當(dāng)需要再往里面添加元素的時(shí)候,需要Array.Resize一下才可以。有鑒于此,為了提高代碼復(fù)用,所以索性封裝下,方便使用。
具體實(shí)現(xiàn)代碼如下:
/// <summary>
/// Array添加
/// </summary>
/// <typeparam name="T">泛型</typeparam>
/// <param name="array">Array</param>
/// <param name="item">需要添加項(xiàng)</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;
}
測(cè)試代碼:
[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);
}
測(cè)試結(jié)果:

代碼邏輯很簡(jiǎn)單,無需說明,只是方面后續(xù)使用而已,這是基于.NET 2.0的寫法,大家都知道,在.NET 3.0+有了LINQ出現(xiàn),實(shí)現(xiàn)此效果更為簡(jiǎn)單方面,代碼如下:
/// <summary>
/// Array添加
/// </summary>
/// <typeparam name="T">泛型</typeparam>
/// <param name="array">Array</param>
/// <param name="item">需要添加項(xiàng)</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;
}
同樣的測(cè)試代碼:
[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);
}
測(cè)試結(jié)果:

希望本文能對(duì)大家有所幫助!
相關(guān)文章
c#實(shí)現(xiàn)獲取字符串陣列中元素最長或最短的長度
下面小編就為大家分享一篇c#實(shí)現(xiàn)獲取字符串陣列中元素最長或最短的長度方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助2017-12-12
C#實(shí)現(xiàn)模擬ATM自動(dòng)取款機(jī)功能
這篇文章介紹了C#實(shí)現(xiàn)模擬ATM自動(dòng)取款機(jī)功能的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08
C#使用ADO.Net部件來訪問Access數(shù)據(jù)庫的方法
數(shù)據(jù)庫的訪問是所有編程語言中最重要的部分,C#提供了ADO.Net部件用于對(duì)數(shù)據(jù)庫進(jìn)行訪問。本文從最簡(jiǎn)單易用的微軟Access數(shù)據(jù)庫入手討論在C#中對(duì)數(shù)據(jù)庫的訪問。2015-09-09
C#使用udp如何實(shí)現(xiàn)消息的接收和發(fā)送
這篇文章主要介紹了C#使用udp如何實(shí)現(xiàn)消息的接收和發(fā)送問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
C#實(shí)現(xiàn)計(jì)算年齡的簡(jiǎn)單方法匯總
本文給大家分享的是C#代碼實(shí)現(xiàn)的簡(jiǎn)單實(shí)用的給出用戶的出生日期,計(jì)算出用戶的年齡的代碼,另外附上其他網(wǎng)友的方法,算是對(duì)計(jì)算年齡的一次小結(jié),希望大家能夠喜歡。2015-05-05

