C#数组的笔记
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#数组的笔记的更多相关文章
- JS数组学习笔记
原文:JS数组学习笔记 最近在备课数组,发现很多ES5的方法平时很少用到.细节比较多,自己做了大量例子和整理,希望对大家了解JavaScript中的Array有所帮助. 概念 数组是值的有序集合.每个 ...
- 多线程循环打印数组 -- Java笔记
问题描述: 现有多个长度相同的数组,现要求使用多线程将数组内的数交替打印. 如: int[] ai = {1,2,3,4,5,6,7}; String[] ac = {"A",&q ...
- java之数组(笔记)
1.与c++不同的声明 int[] i, j; int i[], j; 这两种声明在c++中是同等的,但是在Java中,前者是声明两个,后者是只有i是数组. 2.数组可以看作是特殊的类 3.数组的cl ...
- 《C++primer》v5 第3章 字符串、向量和数组 读书笔记 习题答案
本章问题 1.char *p="hello world";与char p[]="hello world"的问题. 简单说前者是一个指向字符串常量的指针,后者是一 ...
- 树状数组的笔记√(hzwer blog)
int lowbit(int x) { return x&(-x); } lowbit()的返回值就是 2^k 次方的值. 求数组的和的算法: (1)首先,令sum=0,转向第二步: (2)接 ...
- Javascript进阶篇——( JavaScript内置对象---下)--Array数组对象---笔记整理
Array 数组对象数组对象是一个对象的集合,里边的对象可以是不同类型的.数组的每一个成员对象都有一个“下标”,用来表示它在数组中的位置,是从零开始的数组定义的方法: 1. 定义了一个空数组: var ...
- shell 变量、参数、数组章节笔记
// 变量名和等号之间不能有空格 hello="123456"; echo $hello; // 花括号只是帮助识别变量边界 echo ${hello}; // unset 删除变 ...
- Kotlin 数组学习笔记
创建数组 初始值为空的String数组 val arrayEmpty = emptyArray<String>() 长度为5,初始值为空的Int数组 val arrayEmpty = em ...
- 程序设计入门-C语言基础知识-翁恺-第六周:数组-详细笔记(六)
目录 第六章:数组 6-1 数组 6-2 数组计算 6.3 课后习题 第六章:数组 6-1 数组 题目:让用户输入一组整数以-1结束输入,算出这组数的平均值,并且输出大于平均值的数. 我们需要记录用户 ...
随机推荐
- Eqs - poj 1840(hash)
题意:对于方程:a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0 ,有xi∈[-50,50], xi != 0, any i∈{1,2,3,4,5}. 现在给出a1,a2,a3, ...
- ICO图标的制作与应用
制作参看:http://www.shouce.ren/tool/ico?action=make 示例: <link href="./js/favicon.ico" rel=& ...
- python 国内镜像
pipy国内镜像目前有: http://pypi.douban.com/ 豆瓣 http://pypi.hustunique.com/ 华中理工大学 http://pypi.sdutlinux.o ...
- SurvivalShooter学习笔记(七.玩家射击)
玩家射击:(这个脚本放在玩家的空子物体上,这个位置为枪口位置) 点击鼠标,玩家射击: 射击枪口发光,射击通过射线,方向有激光效果:(关于射线不明白可以参考Unity射线相关) 射击有射击音效 射击有每 ...
- sql 存储过程调用函数
/****************************************************************************** ** Name: usp_biz_Con ...
- iOS开发之--Mac终端命令大全
目录操作 命令名 功能描述 使用举例 mkdir 创建一个目录 mkdir dirname rmdir 删除一个目录 rmdir dirname mvdir 移动或重命名一个目录 mvdir dir1 ...
- LINUX下搭建JAVA的开发环境
LINUX下搭建JAVA的开发环境 (2009-07-13 10:04:13) 下面就将Linux下JAVA开发环境的搭建详细道来: 1.Linux下JDK的安装 至于下载JDK的二进制可执行 ...
- 自己搭建IntelliJ IDEA授权服务器
https://github.com/Jrohy/Idea_LicenseServer_onekey 运行 bash <(curl -L -s https://raw.githubusercon ...
- IOS控件:计算文字长度(UITextField,UILabel对象 和 IBAction)
#import <UIKit/UIKit.h> // UIViewController类为程序提供了基本的视图管理模块 @interface NavControllerViewContro ...
- Java获取任意时间、时间字符串
/* * 获取时间字符串*/public String getCurrentTime() { SimpleDateFormat sdf = new SimpleDateFormat("yyy ...