C#数组Array的基础知识及二位数组和数组的数组的区别
首先了解一下C#关于数组的一些基础知识:
1、数组Array都隐士派生自System.Array抽象类,而System.Array类又继承自System.Object基类,(事实上数组都隐士实现了IEnumerable,ICollection,IList接口) 所以C#中的数组都始终是引用类型,
变量和字段中包含的是数组的引用,而不是数组本身的元素。
2、因为是引用类型,所以数组都是在托管堆中分配的。
3、数组作为实参传递给一个方法时,实际传递的是对该数组的引用。因此被调用的方法能修改数组的元素。
4、Array.Copy提供的数组拷贝方法,是一个浅拷贝,也就说如果数组元素是引用类型,新数组将引用源数组的对象。
5、C#数组默认是0基数数组(索引从0开始),一维0基数组也称为向量,向量的性能是最佳,因为CLR使用了一些特殊的IL指令来优化向量的操作。
6、C#支持多维数组,如二维数组可以想象成一个矩阵,三维数组可以想象成一个立体空间,定义如下:
Double[,] myDoubles = new Double[10,20];
//创建一个三维数组,由String引用构成。
String[,,] myStrings = new String[4,5,10];
7、CLR支持数组的数组,即交错数组(jagged array)。
交错数组定义如下:
//注意定义方式与多维数组的区别
Point[][] myGraphic = new Point[3][];
//引用了含有10个Point实例的数组
myGraphic[0] = new Point[10];
//引用了含有20个Point实例的数组
myGraphic[1] = new Point[20];
//引用了含有30个Point实例的数组
myGraphic[2] = new Point[30];
//显示第一个图形。
for(int i=0;i<myGraphic[0].Length;i++)
Console.WriteLine(myGraphic[0][i]);
下面说说面试中经常被问到的问题:二位数组和数组的数组的区别。
二维数组是按照指定的类型的一组数,比如 int [2,3]那就是说一个两行三列的矩阵,每一个元素都是一个整型数的数组。
交错数组int[2][],指的是这个数组有两个元素,每一个元素都是一个整型的数组,但是长度可以不一样,
比如
int [][] arr= new int[2][];
int [0][]=new int[10];
int [1][]=new int[8];
参考:《CLR via C#》3th
转载于:https://www.cnblogs.com/nightmare23/archive/2012/03/03/2378491.html
C#数组Array的基础知识及二位数组和数组的数组的区别相关推荐
- (硅谷课堂项目)Java开发笔记4:前端基础知识(二)
文章目录 (硅谷课堂项目)Java开发笔记4:前端基础知识(二) 一.NPM 1.NPM简介 1.1.什么是NPM 1.2.NPM工具的安装位置 2.使用npm管理项目 2.1.创建文件夹npm 2. ...
- Java基础知识(二)(Object类的常用方法、日期时间类、System类、StringBuilder类、包装类、Collection集合、Iterator迭代器、泛型、list集Set接口...)
文章目录 Java基础知识(二) 1.Object类的常用方法 1.1 toString方法 1.2 equals方法 1.3 Objects类 2.日期时间类 2.1 Date类 2.2 DateF ...
- Vue基础知识总结(二):进阶篇
Vue基础知识总结(二):进阶篇 1.0 MVVM模式 MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式. MVVM模式将页面,分层了 M .V.和VM , ...
- Android基础知识(二十):Notification、提醒式通知(横幅)踩坑与通知界面设置跳转
Android基础知识(二十):Notification.提醒式通知(横幅)踩坑与通知界面设置跳转 一.Notification通知与基本用法 通知Notification是Android系统中比较有 ...
- 概率论基础知识(二) 随机变量及其分布
概率论基础知识(二) 随机变量及其分布 1.随机变量 定义:设随机试验的样本空间为S={e}, X=X(e)是定义在样本空间S上的实值单值函数.称X=X(e)为随机变量. 这样一来,样本空间可以很好的 ...
- 计算广告基础知识(二)
计算广告基础知识(二) 刘鹏老师<计算广告:互联网商业变现的市场与技术>读书笔记 计算广告基础知识二 重点名词 合约广告 受众定向 流量预测traffic forecasting 流量塑形 ...
- SQL基础知识(二)
SQL基础知识(二) 目录: 查找所有员工自入职以来的薪水涨幅情况 统计各个部门对应员工涨幅的次数总和 对所有员工的当前薪水按照salary进行按照1-N的排名 获取所有非manager员工当前的薪水 ...
- 办公自动化基础知识题二
办公自动化基础知识题二 一.选择题 1.软盘不能写入只能读出的原因是___. (A) A)写保护 B)新盘未格式化 C)已使用过的软盘 D)软驱有问题 2.下列设备中属于计算机输入设备的是___. ...
- ZigBee基础知识(二)
目录 2.1 设备类型(Device Types) 2.1.1 Coordinator(协调器) 2.1.2 Router(路由器) 2.1.3 End-Device(终端设备) 2.2 协议栈规范( ...
- 姿态解算基础知识(二)-旋转矢量坐标变换的四元数描述的验证
姿态解算基础知识(二)-旋转矢量坐标变换的四元数描述的验证 2015-11-14 补充下四元数的知识及上篇博文提到的旋转矢量坐标变换的四元数描述的推导过程. 四元数q可以看出由一个实数和一个三维矢量组 ...
最新文章
- top刷新间隔_每天一个linux命令:top命令
- Interview:算法岗位面试—10.12上午—上海某科技公司图像算法岗位(偏图像算法,互联网AI行业)技术面试考点之LoR逻辑回归的底层代码实现、特征图计算公式
- 中小企业CRM评测-八百客
- RuntimeError: inconsistent AsyncHTTPClient cache
- linux dhcp 服务(转)
- Python 迭代器,错误、异常处理
- php程序怎么上传服务器,php本地文件上传到远程服务器
- 一道海量日志的随机选取问题
- ‘chromedriver.exe‘ executable needs to be in PATH.解决办法
- (Quicker)懒人福利:鼠标快捷操作工具箱
- Android自定义Button按钮显示样式
- DUET DISPLAY分屏软件IOS账号共享
- k中心点聚类算法伪代码_数据分析之二分K均值聚类算法
- poi excel 添加水印
- 别说你不知道光纤有这七种类型!
- 如何在Google文档中添加文本框
- 择时 配置 选股0909
- Make it Divisible by 25
- 腾讯地图仿微信发送位置功能
- PHP毕业设计——艺术品展示网站