Array.Copy的笔记:

1、将值类型的元素装箱位引用类型的元素,比如讲一个Int32[]的元素复制到Object[]中

2、将引用类型的元素拆箱为值类型的元素

3、加宽CLR基元值类型,比如讲一个Int32[]的元素复制到一个Double[]中。

4、在两个数组之间复制是,如果仅从数组类型证明不了两者的兼容性,比如从Object[]转型为IFormattable[],根据需要对元素进行向下类型转换。如果Object[]中的每一个对象都实现了IFormattable,Copy方法就能成功执行。

如果只是需要把数组中的某些元素复制到另一个数组,可以选择System.Buffer的BlockCopy方法,它的执行速度比Array的Copy方法快。

所有数组都隐式派生自System.Array。

所有数组痘印是实现IEnumerable,Icollection和IList:因为这些接口将所有元素都视为System.Object,然而,最好是让System.Array都实现这些接口的泛型形式,提供更好的编译时类型安全性和更好的性能。

不过,因为涉及多维数组和非0基数组的问题,CLR团队不希望System.Array实现IEnumerable<T>,ICollection<T>和IList<T>。同时还会维数组类型的所有基类型实现这三个接口,只要他们是引用类型。一下层次结构图对此进行了澄清:

Object
Array
Object[]
Stream[]
FileStream[]

所以,如果你执行以下代码:

FileStream[]fsArray

CLR创建FileStream[]类型时,会自动为这个类型实现IEnumerable<Stream>,IEnumerable<Object>,ICollection<Object>,IList<Stream>和IList<Object>。

C#数组的笔记的更多相关文章

  1. JS数组学习笔记

    原文:JS数组学习笔记 最近在备课数组,发现很多ES5的方法平时很少用到.细节比较多,自己做了大量例子和整理,希望对大家了解JavaScript中的Array有所帮助. 概念 数组是值的有序集合.每个 ...

  2. 多线程循环打印数组 -- Java笔记

    问题描述: 现有多个长度相同的数组,现要求使用多线程将数组内的数交替打印. 如: int[] ai = {1,2,3,4,5,6,7}; String[] ac = {"A",&q ...

  3. java之数组(笔记)

    1.与c++不同的声明 int[] i, j; int i[], j; 这两种声明在c++中是同等的,但是在Java中,前者是声明两个,后者是只有i是数组. 2.数组可以看作是特殊的类 3.数组的cl ...

  4. 《C++primer》v5 第3章 字符串、向量和数组 读书笔记 习题答案

    本章问题 1.char *p="hello world";与char p[]="hello world"的问题. 简单说前者是一个指向字符串常量的指针,后者是一 ...

  5. 树状数组的笔记√(hzwer blog)

    int lowbit(int x) { return x&(-x); } lowbit()的返回值就是 2^k 次方的值. 求数组的和的算法: (1)首先,令sum=0,转向第二步: (2)接 ...

  6. Javascript进阶篇——( JavaScript内置对象---下)--Array数组对象---笔记整理

    Array 数组对象数组对象是一个对象的集合,里边的对象可以是不同类型的.数组的每一个成员对象都有一个“下标”,用来表示它在数组中的位置,是从零开始的数组定义的方法: 1. 定义了一个空数组: var ...

  7. shell 变量、参数、数组章节笔记

    // 变量名和等号之间不能有空格 hello="123456"; echo $hello; // 花括号只是帮助识别变量边界 echo ${hello}; // unset 删除变 ...

  8. Kotlin 数组学习笔记

    创建数组 初始值为空的String数组 val arrayEmpty = emptyArray<String>() 长度为5,初始值为空的Int数组 val arrayEmpty = em ...

  9. 程序设计入门-C语言基础知识-翁恺-第六周:数组-详细笔记(六)

    目录 第六章:数组 6-1 数组 6-2 数组计算 6.3 课后习题 第六章:数组 6-1 数组 题目:让用户输入一组整数以-1结束输入,算出这组数的平均值,并且输出大于平均值的数. 我们需要记录用户 ...

随机推荐

  1. Hbase系列-Hbase简介

    自1970年以来,关系数据库用于数据存储和维护有关问题的解决方案.大数据的出现后,好多公司实现处理大数据并从中受益,并开始选择像 Hadoop 的解决方案.Hadoop使用分布式文件系统,用于存储大数 ...

  2. [转]所有编程皆为 Web 编程

    Web编程还远远没有达到完美的境地.其实,还有点乱!没错,随便会写点代码的人就能三下两下地搞出一个糟糕的Web应用:也确实,99%的Web 应用都似狗屎一堆.但是,这也意味着,相当“聪明”的程序员们正 ...

  3. JSP数据库连接成功

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...

  4. 将int型数字转换成6位字符串,不足的时候,前面补0

    将int型数字转换成6位字符串,不足的时候,前面补0 方法一: int num = 123; num.ToString("000000"); 方法二: int num = 123; ...

  5. 2017 ACM区域赛(西安) 参赛流水账

    day 0: 周五, 鸽了概统课,早上和紫金港的几位小伙伴一起打车去萧山机场,从咸阳机场到西北工业大学坐了五十多个站的公交车,感觉身体被掏空.晚上在宾馆本来打算补之前训练的一个题,想想还是先花个十来分 ...

  6. 【BZOJ】3016: [Usaco2012 Nov]Clumsy Cows(贪心)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3016 之前yy了一个贪心,,,但是错了,,就是枚举前后对应的字符(前面第i个和后面第i个)然后相同答 ...

  7. ie tbody table 兼容方法

    IE6-IE9中tbody的innerHTML不能赋值,重现代码如下 Js代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2 ...

  8. java网络编程2-URL和URI

    //创建url可以指定请求的url协议,但不同的jvm支持的协议可能不相同(大部分支持http.file.https) //构造只判断字符串中的协议支不支持,而不判断url的正确性 URL url=n ...

  9. asp.net session丢失的解决方法小结

    现在我就把原因和解决办法写出来. ASP.NET Session丢失原因: 由于Asp.net程序是默认配置,所以Web.Config文件中关于Session的设定如下: < sessionSt ...

  10. ReactJS组件之间通信

    http://www.open-open.com/lib/view/open1473838243065.html