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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Mysql和redis_简述Redis和MySQL的区别[通俗易懂]

    Mysql和redis_简述Redis和MySQL的区别[通俗易懂]我们知道,mysql是持久化存储,存放在磁盘里面,检索的话,会涉及到一定的IO,为了解决这个瓶颈,于是出现了缓存,比如现在用的最多的memcached(简称mc)。首先,用户访问mc,如果未命中,就去访问mysql,之后像内存和硬盘一样,把数据复制到mc一部分。redis和mc都是缓存,并且都是驻留在内存中运行的,这大大提升了高数据量web访问的访问速度。然而mc只是提供了简单的数据结构,比如…

    2022年6月16日
    51
  • bigtable是什么_BigTable

    bigtable是什么_BigTableBigtable是一个用来管理结构化数据的分布式存储系统,具有很好的伸缩性,能够在几千台应用服务器上处理PB数量级数据。谷歌有许多项目都把数据存储在Bigtable中,包括webindexing,G

    2022年8月3日
    5
  • java8 reduce的用法_Java 8系列之Stream中万能的reduce用法说明

    java8 reduce的用法_Java 8系列之Stream中万能的reduce用法说明reduce操作可以实现从Stream中生成一个值,其生成的值不是随意的,而是根据指定的计算模型。比如,之前提到count、min和max方法,因为常用而被纳入标准库中。事实上,这些方法都是reduce操作。reduce方法有三个override的方法:Optionalreduce(BinaryOperatoraccumulator);Treduce(Tidentity,BinaryO…

    2025年6月18日
    3
  • SpringBoot+SpringCloud面试题整理

    SpringBoot+SpringCloud面试题整理什么是SpringBoot?1、用来简化spring初始搭建和开发过程使用特定的方式进行配置(properties或者yml文件)2、创建独立的spring引用程序main方法运行3、嵌入Tomcat无需部署war包,直接打成jar包nohupjava-jar–&amp;启动就好4、简化了maven的配置4、自动配置spring添加对应的starter自动化配置SpringB…

    2022年6月3日
    27
  • 图书馆借阅系统「建议收藏」

    图书馆借阅系统一、图书馆借阅系统是对书籍信息操作的信息管理系统。书籍信息包括书名、作者、编号、是否借出。本系统针对两类用户(图书管理员和学生)使用,对于图书馆管理员,可以进行查看书籍列表、查找书籍、新增书籍信息、删除书籍、退出登录操作;对于学生,可以进行查看书籍列表、查找书籍、借阅书籍、归还书籍、退出登录操作。二、代码部分1.book包的建立Book类的建立对于图书馆借阅系统,把书看作一个对象,根据该book所具有的属性,定义一系列书籍的私有属性,以及对这些属性进行操作的访问器(get())和设置器

    2022年4月12日
    48
  • 向 J2EE 架构师 学习之路[通俗易懂]

    向 J2EE 架构师 学习之路[通俗易懂]首先表明下这个只是个人记录,看到觉得很烂莫怪。认真看点书学点知识,脚踏实地的走,记录学到的东西,收获的东西,慢慢的成长。今天心血来潮,想看下书,百度搜索了下到csdn下载了一本《TheJ2EEArchitect’sHandbook》,毕竟想成为J2EE架构师自己觉得自己路还很长,一直觉得自己很笨,做事方法肯定有问题,一会看js,一会看java,一会看j2ee,感觉确认很烦,自己未来…

    2022年6月24日
    28

发表回复

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

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