C# 数组截取

C# 数组截取这段时间常常需要对数据的数据进行截取,以方便解析。原来一直用的Array.ConstrainedCopy();以及 Array.Copy();来进行数组复制截取 先看Array.ConstrainedCopy():其说明如下 publicstaticvoidConstrainedCopy(ArraysourceArray,intsourceIndex,Arraydes…

大家好,又见面了,我是你们的朋友全栈君。

这段时间常常需要对数据的数据进行截取,以方便解析。

原来一直用的Array.ConstrainedCopy();以及 Array.Copy();来进行数组复制截取

 

  • 先看Array.ConstrainedCopy():其说明如下
  1.  public static void ConstrainedCopy(Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length);
     

 // 摘要:
        //     从指定的源索引开始,复制 System.Array 中的一系列元素,将它们粘贴到另一 System.Array 中(从指定的目标索引开始)。保证在复制未成功完成的情况下撤消所有更改。
        //
        // 参数:
        //   sourceArray:
        //     System.Array,它包含要复制的数据。
        //
        //   sourceIndex:
        //     一个 32 位整数,它表示 sourceArray 中复制开始处的索引。
        //
        //   destinationArray:
        //     System.Array,它接收数据。
        //
        //   destinationIndex:
        //     一个 32 位整数,它表示 destinationArray 中存储开始处的索引。
        //
        //   length:
        //     一个 32 位整数,它表示要复制的元素数目。
        //
        // 异常:
        //   T:System.ArgumentNullException:
        //     sourceArray 为 null。- 或 -destinationArray 为 null。
        //
        //   T:System.RankException:
        //     sourceArray 和 destinationArray 的秩不同。
        //
        //   T:System.ArrayTypeMismatchException:
        //     sourceArray 类型不同于并且不是从 destinationArray 类型派生的。
        //
        //   T:System.InvalidCastException:
        //     sourceArray 中的至少一个元素无法强制转换为 destinationArray 类型。
        //
        //   T:System.ArgumentOutOfRangeException:
        //     sourceIndex 小于 sourceArray 的第一维的下限。- 或 -destinationIndex 小于 destinationArray
        //     的第一维的下限。- 或 -length 小于零。
        //
        //   T:System.ArgumentException:
        //     length 大于从 sourceIndex 到 sourceArray 末尾的元素数。- 或 -length 大于从 destinationIndex
        //     到 destinationArray 末尾的元素数。

 

  • 再看Array.Copy();:

它有四个重载,都差不多,具体就不多累赘了,直接来看:

   

  1. 第一种是三参数的重载(有两种,不过只是长度length由int变为long了)

 public static void Copy(Array sourceArray, Array destinationArray, int length);

        // 摘要:
        //     从第一个元素开始复制 System.Array 中的一系列元素,将它们粘贴到另一 System.Array 中(从第一个元素开始)。长度指定为 32 位整数。
        //

  1. 2二种是五参数的重载(同样有两种,长度length及索引index由int变为long)

 public static void Copy(Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length);
    // 摘要:
        //     从指定的源索引开始,复制 System.Array 中的一系列元素,将它们粘贴到另一 System.Array 中(从指定的目标索引开始)。长度和索引指定为
        //     32 位整数。
 

后来了解到还有一种方法可以截取,如下:

            data.Skip(n).Take(m).ToArray();

  • data是源数组
  • Skip()定义如下
    •            public static IEnumerable<TSource> Skip<TSource>(this IEnumerable<TSource> source, int count);
    •         // 摘要:
              //     跳过序列中指定数量的元素,然后返回剩余的元素。
              //
  • Take定义如下:
    •         public static IEnumerable<TSource> Take<TSource>(this IEnumerable<TSource> source, int count);
    •         // 摘要:
              //     从序列的开头返回指定数量的连续元素。
              //

现在将这几种方法记录下来,主要了解的也不是很深,就不对其做什么多余的解释说明了,以免误导大家。

如果后续有其他方法,我会持续更新,同时也希望大家能给我更多的指点。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133578.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • VS2013序列号_visual studio2010激活码

    VS2013序列号_visual studio2010激活码VS2008序列号/注册码(各种版本都有)2009-08-2123:18   –VS2008.NET简体中文版序列号1.VisualStudio2008ProfessionalEdition:XMQ2Y-4T3V6-XJ48Y-D3K2V-6C4WT2.VisualStudio2008TeamTestLoadAgent:WPX3J-BXC3W

    2022年8月10日
    8
  • page对象的使用及常见方法

    page对象的使用及常见方法page对象的使用及常见方法制作人:全心全意page对象代表JSP本身,只有在JSP页面内才是合法的。page对象本质上是包含当前Servlet接口引用的变量,可以看作是this关键字的别名。p

    2022年7月4日
    41
  • js基本七种数据类型_js原始数据类型

    js基本七种数据类型_js原始数据类型Js中的数据类型虽然也是一个老生常谈的问题,但它经常出现在整个面试的前几问中,面试官会通过你的回答来决定之后问题的走向,比如当你回答基本数据类型时少回答了一个String时,那么面试官很可能就会问你String都有哪写方法哦~

    2025年7月22日
    3
  • Imagination光线追踪创意赛顺利落幕 冠军喜获万元大奖

    Imagination光线追踪创意赛顺利落幕 冠军喜获万元大奖4 月 20 日 历时 4 个月的 ImaginationO 光线追踪 全球开发创意赛顺利落下帷幕 在经历报名 提交作品 专家评审等环节后 Imagination 在北京向冠军获得者胡

    2025年11月13日
    5
  • Mysql | 数据库锁表的原因和解决方法「建议收藏」

    Mysql | 数据库锁表的原因和解决方法「建议收藏」锁表的原因:当多个连接(数据库连接)同时对一个表的数据进行更新操作,那么速度将会越来越慢,持续一段时间后将出现数据表被锁的现象,从而影响到其它的查询及更新。  例如:存储过程循环30次更新操作(cycore_file_id为唯一标识)/*30次更新操作*/BEGINDECLAREv1INTDEFAULT30;WHILEv1&amp;amp;amp;gt;0DOu…

    2022年8月23日
    5
  • 中介者模式和观察者模式的区别_序列中介作用

    中介者模式和观察者模式的区别_序列中介作用中介者模式 Mediator动机模式定义结构要点总结笔记动机在软件构建过程中,经常会出现多个多个对象相互关联交互的情况,对象之间常常会维持一种复杂的引用关系.如果遇到一些需求的更改.这种直接的引用关系将面临不断地变化这种情况下,我们可以使用一个”中介对象”来管理对象间地关联关系,避免相互交互地对象之间地紧耦合引用关系,从而更好地抵御变换模式定义用一个中介对象来封装(封装变化)一系列地对象交互中.中介者使各个对象不需要显式地相互引用(编译时依赖->运行时依赖),从而使其耦合松散(管理变化),而

    2022年8月11日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号