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);
    •         // 摘要:
              //     从序列的开头返回指定数量的连续元素。
              //

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

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 西数移动硬盘不识别(移动硬盘怎么用)

    移动硬盘作为便携式存储器,很多用户都会在自己的电脑上安装。但最近有网友却反馈说自己的win10ltsb系统电脑出现了西数移动硬盘无法识别的情况,该怎么处理呢?下面本文就为大家整理了关于win10ltsb西数移动硬盘无法识别的具体解决措施,一起往下看吧。解决措施如下:1、首先打开计算机,在【此电脑】上鼠标右键,选择【管理】。2、这样,就进入了计算机管理界面。如下图,选择【磁盘管理】选项。3、在磁盘管理界面可以看到上方列出了所有内置磁盘和插入的磁盘,资源管理器中无法读取的磁盘也在..

  • U盘 未知USB设备 设定地址失败 由于该设备有问题Windows 已将其停止(代码 43) 终极解决方案(做过系统装机盘而无法解决的必看)

    U盘 未知USB设备 设定地址失败 由于该设备有问题Windows 已将其停止(代码 43) 终极解决方案(做过系统装机盘而无法解决的必看)U盘由于该设备有问题Windows已将其停止(代码43)终极解决方案我们在使用U盘的时候偶尔会碰到下列情况一般是因为传输数据的过程中,死机或未响应直接断点或拔掉设备导致的,U盘再次插上之后出现设定地址失败。无法再次读取设备的数据。解决方案:首先请确认出现该情况不是因为你摔了U盘或接口处产生断裂这种物理损伤导致的!!!首先请确认出现该情况不是因为你摔了U盘或接口处产生断裂这种物理损…

  • eclipse离线安装svn插件使用教程_eclipse导入svn项目

    eclipse离线安装svn插件使用教程_eclipse导入svn项目最近要在eclipse上安装一个svn插件,本来以为是很简单的一件事,没想到尝试了很多方法,还是各种不成功以下是网上常见的解决方案:第一种(失败):help->EclipseMarketplace在线安装结果:下载不下来,换一个版本的插件安装成功,但连接仓库会提示0x00400006第二种(失败):help->InstallNewSoftware手动在线安装:给的地址是类似这样的:http://subclipse.tigris.org/update_1.8…

    2022年10月14日
  • pycharm使用matplotlib绘图学习笔记「建议收藏」

    pycharm使用matplotlib绘图学习笔记「建议收藏」#encoding=utf-8importnumpyasnpdefmain():importmatplotlib.pyplotasplt##lesson1:画图#x=np.linspace(-1,1,50)#x=np.linspace(-np.pi,np.pi,256,endpoint=True)#c,s=np.cos(x),np.sin(x)#plt.figure(1)#plt.plot(x,.

  • 如何搭建传奇服务器_架设传奇需要什么样的服务器

    如何搭建传奇服务器_架设传奇需要什么样的服务器分享一篇技术文章,传奇私服架设教程。教程讲的很详细,就是一个菜鸟都能学会如何架设传奇私服。在管理工具->服务中停止ssdpdiscoveryservic服务一、准备软件DBCommander2000Pro和传奇服务端(什么版本都行)。二、简易安装说明:1、安装设置DBCommander2000Pro1)安装DBCommander2000Pro2)打开控制面板3)打开BDEA…

  • tomcat自定义类加载器_开发者不可以自定义类加载器

    tomcat自定义类加载器_开发者不可以自定义类加载器tomcat自定义类加载器

发表回复

您的电子邮箱地址不会被公开。

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