当前位置:  编程技术>.net/c#/asp.net

C#实现Array添加扩展实例

    来源: 互联网  发布时间:2014-11-01

    本文导语:  一般学过C#的都知道,Array 一旦定义好,比如四个长度,当需要再往里面添加元素的时候,需要Array.Resize一下才可以。有鉴于此,为了提高代码复用,所以索性封装下,方便使用。 具体实现代码如下: /// /// Array添加 /// /...

一般学过C#的都知道,Array 一旦定义好,比如四个长度,当需要再往里面添加元素的时候,需要Array.Resize一下才可以。有鉴于此,为了提高代码复用,所以索性封装下,方便使用。

具体实现代码如下:

/// 
/// Array添加
/// 
/// 泛型
/// Array
/// 需要添加项
/// 返回新的Array
public static T[] Add(this T[] array, T item)
{
  int _count = array.Length;
  Array.Resize(ref array, _count + 1);
  array[_count] = item;
  return array;
}
/// 
/// Array添加
/// 
/// 泛型
/// Array
/// Array
/// 返回新的Array
public static T[] AddRange(this T[] sourceArray, T[] addArray)
{
  int _count = sourceArray.Length;
  int _addCount = addArray.Length;
  Array.Resize(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出现,实现此效果更为简单方面,代码如下:

/// 
/// Array添加
/// 
/// 泛型
/// Array
/// 需要添加项
/// 返回新的Array
public static T[] Add(this T[] array, T item)
{
  array = 
array.Concat

(new T[1] { item }).ToArray();
  return array;
}
/// 
/// Array添加
/// 
/// 泛型
/// Array
/// Array
/// 返回新的Array
public static T[] AddRange(this T[] sourceArray, T[] addArray)
{
  sourceArray = 
sourceArray.Concat

(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);
}

测试结果:

希望本文能对大家有所帮助!


    
 
 

您可能感兴趣的文章:

  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • C#实现获取枚举中元素个数的方法
  • C#实现自定义双击事件
  • C#键盘输入回车键实现点击按钮效果的方法
  • C#实现获取一年中是第几个星期的方法
  • C#实现Datatable排序的方法
  • C#实现装箱与拆箱操作简单实例
  • 解决C#中WebBrowser的DocumentCompleted事件不执行的实现方法
  • C#下实现创建和删除目录的实例代码
  • 使用C#实现在屏幕上画图效果的代码实例
  • C#实现过滤html标签并保留a标签的方法
  • c#实现TextBox只允许输入数字
  • C# Winform 整个窗口拖动的实现代码
  • c# ListView实现双击Item事件的变通方法
  • C#实现随鼠标移动窗体实例
  • C#中的FileUpload 选择后的预览效果具体实现
  • C# 窗体隐藏及任务管理器中禁止关闭的实现代码
  • C#的锯齿数组以及C++实现代码
  • C#格式化文件大小的实现代码
  • C#怎样才能实现窗体最小化到托盘呢?
  • C# char类型字符转换大小写的实现代码
  • 请问在一个servlet里取得一个用singleton模式实现的类实例,那么这个类实例的生命周期是怎样的?
  • 高分求c 实现线程池的一个实例
  • python实现的重启关机程序实例
  • 怎样检测一个对象的实例的存在,并且删除它?程序是怎样实现的?谢谢!
  • python调用短信猫控件实现发短信功能实例
  • Java调用DOS实现定时关机的实例
  • C语言实现杨辉三角实例
  • 那位牛人可以说说实例池的原理和实现??
  • C语言实现堆排序的简单实例
  • java实现大数加法(BigDecimal)的实例代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • PHP扩展实现的框架 ZoeeyPHP
  • 扩展jQuery对象时如何扩展成员变量具体怎么实现
  • 怎么编程实现发送Ipv6携带扩展报头的数据包??对ipv6有研究的朋友进来帮帮忙?
  • 利用MySQL函数实现判断视频扩展名的代码
  • SQL Server中通过扩展存储过程实现数据库的远程备份与恢复
  • Applet应用扩展--数字签名(一) 使用签名的jar包,即可实现访问沙箱之外!
  • 基于Apache Nutch和Htmlunit的扩展实现AJAX页面爬虫抓取解析插件 nutch-htmlunit
  • WinForm实现基于BindingSource的方法扩展
  • 用C实现PHP扩展 Image_Tool 图片常用处理工具类的使用
  • 用C实现PHP扩展 Fetch_Url 类数据抓取的方法
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • socket实现多文件并发传输,求助多线程实现问题?
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • interface 到底有什么用???实现接口,怎么实现??
  • 通过javascript库JQuery实现页面跳转功能代码
  • 怎么用Jsp实现在页面实现树型结构?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • php实现socket实现客户端和服务端数据通信源代码
  • 网站重定向用C语言实现iptables,ACL实现
  • flash AS3反射实现(describeType和getDefinitionByName)
  • 在linux下如何编程实现nslookup命令实现的IP地址和域名互相转换的功能?
  • boost unordered_map和std::list相结合的实现LRU算法
  • 求在freebsd+Squid下实现pc上网的透明代理的实现方法!给出具体配置方法的高分谢!
  • 使用java jdk中的LinkedHashMap实现简单的LRU算法
  • linux下如实现与window下的驱动器实现文件共享??
  • iphone cocos2d 精灵的动画效果(图片,纹理,帧)CCAnimation实现
  • qt如何实现:操作键盘实现数据的滚动?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • 我想用APPLET实现读取客户端的图片文件,该如何实现?
  • html<pre>标签自动换行实现方法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3