派生关系:
System.Object => System.Array => 数组

数组是引用类型,是在托管堆上进行分配的。

Int32[] myIntegers;          //声明了一个数组引用,初始设置为null
myIntegers = new Int32[100]; //创建了含有100个Int32的数组,初始化为0。该数组的内存块地址被返回并保存到myIntegers变量中

创建引用类型数组:

Control[] myControls;          //声明一个数组引用
myControls = new Control[150]; //创建含有50个Control引用的数组,分配含有50个Control引用的一个数组,这些引用全部被初始化为null。

创建多维数组:

//创建二维数组,由Double值构成
Double[,] myDoubles = new Double[10,20];
//创建三维数组,由String引用构成
String[,,] myStrings = new String[5,3,10];

CLR支持交错数组(jagged array),即由数组构成的数组。
如何创建多边形数组,每个多边形由一个Point实例数组构成:

//创建含有Point数组的一维数组
Point[][] myPolygons = new Point[3][];//myPolygons[0]引用一个含有10个Point实例的数组
myPloygons[0] = new Point[10];//myPolygons[1]引用一个含有20个Point实例的数组
myPolygons[1] = new Point[20];//myPloygons[2]引用一个含有30个Point实例的数组
myPloygons[2] = new Point[30];//显示第一个多边形中的Point
for(Int32 x=0;x < myPloygons[0].Length; x++)
{
Console.WriteLine(myPloygons[0][x]);
}

16.1 初始化数组元素

String[] name = new String[]{"Aidan","Grant"}; //大括号中以逗号分隔的数据项称为数组初始化器,每个数据项都可以是一个任意复杂度的表达式。

语法糖简写:
String[] names ={"Aidan","Grant"};
但不允许写成:
var names ={"Aidan","Grant"};  //需要编译器做的太多了,所以报错

可利用C#的隐式类型的数组功能让编译器推断数组元素的类型:
下面代码没有在new和[]之间指定类型:

var names = new[]{"Aidan","Grant",null}; //null可转型为任意引用类型(包括String),所以推断为String类型

//使用C#的隐式类型的局部变量和隐式类型的数组功能:(错误)

var names = new[] {"Adia","Grant",123}; //报错:找不到隐式类型数组的最佳类型,因为string和int32共同基类是Object,所以不得不创建Object引用的数组,然后对123进行装箱。C#团队认为装箱代价高昂,所以编译报错。

“隐式类型的数组”如何与“匿名类型”和“隐式类型的局部变量”组合使用:

//使用C#的隐式类型的局部变量、隐式类型的数组和匿名类型功能:
var kids = new[]{new {Name="Aian"},new {Name="Crant"}};

//示例用法(用了另一个隐式类型的局部变量):
foreach(var kid in kids){Console.WriteLine(kid.Name);
}

转载于:https://www.cnblogs.com/zxx193/p/3880628.html

第三部分 基本类型:第16章 数组相关推荐

  1. Think in Java第四版 读书笔记10 第16章 数组

    Think in Java第四版 读书笔记10 第16章 数组 数组和容器很像 但他们有一些差别 16.1 数组为什么特殊 数组与容器的区别主要在效率和存储类型 效率:数组是简单的线性序列 使得数组的 ...

  2. 汇编语言-第三版-王爽-第15章 外中断-第16章 直接定址表

    P280:在屏幕中间依次显示a~z, 显示过程中,按下ESC键后,改变显示颜色 P283:在DOS下,按F1键后改变当前屏幕的显示颜色,其他的键照常处理 P293:以十六进制的形式显示给定的字节型数据 ...

  3. mySQL 教程 第16章 MySQL复制

    第16章 MySQL复制 复制解决的问题 概述:你的网站访问量非常大,对系统的稳定性非常高,那么可以使用mysql功能的复制功能,复制是指将主要的数据库的DDL和DML操作通过二进制日志传到复制服务器 ...

  4. 《Swift开发实战》——第16章,第16.2节下标脚本用法

    本节书摘来自异步社区<Swift开发实战>一书中的第16章,第16.2节下标脚本语法,作者 李宁,更多章节内容可以访问云栖社区"异步社区"公众号查看 16.2 下标脚本 ...

  5. 《C++ Primer Plus》读书笔记 第16章 string类和标准模板库

    第16章 string类和标准模板库 1.string类 表16.1列出了string类的几个构造函数.其中NBTS(null-terminated string)表示以空字符结束的传统C-风格字符串 ...

  6. 第 16 章 string类和标准模板库

    第 16 章 string类和标准模板库 16.1 string类 C语言在 string.h(C++中为cstring)提供了一系列的字符串函数. 16.1.1 构造字符串 string 实际上是模 ...

  7. 《JAVA编程思想》学习笔记:第16章(数组)

    目录 Java编程思想(一)第1~4章:概述 Java编程思想(二)第5章:初始化和清理 Java编程思想(三)第6章:访问权限 Java编程思想(四)第7章:复用类 Java编程思想(五)第8章:多 ...

  8. 【《C Primer Plus》读书笔记】第16章:C预处理器和C库

    [<C Primer Plus>读书笔记]第16章:C预处理器和C库 16.1 翻译程序的第一步 16.2 明示常量:#define 16.2.1 记号 16.2.2 重定义常量 16.3 ...

  9. 4.13日第12次作业,16章外包,17章需求,19章组织级与大型项目

    4.13日第12次作业,16章外包,17章需求,19章组织级与大型项目 29-高项-田哲琦 16章.外包管理 1.外包的形式有哪五种?什么是利益关系?P346-348 答:企业现行采用的主要外包形式如 ...

最新文章

  1. SamplePairing:针对图像处理领域的高效数据增强方式 | PaperDaily #34
  2. XE5 Android 开发实现手机打电话和发短信 [转]
  3. DDD-上下文映射图
  4. openssl搭建私有CA
  5. 梦断代码读后感——终结
  6. 图标透明,产生的EXE图标不透明
  7. 阿里云郑晓:浅谈GPU虚拟化技术(第四章)
  8. mysql如何导入mdl文件_将sql文件导入PowerDesigner中的方法(将oracle sql文件转换成mysql)...
  9. MSP430的JTAG接口和BSW接口
  10. IE重置input file
  11. ACM解题总结——HihoCoder1199 (微软笔试题)
  12. SceneKit中文文档
  13. 飞秋FeiQ可以聊天,但无法传输文件
  14. 深度学习方法的超分辨率(Super-resolution)方向论文【不定期更新】
  15. 社区送温暖!Unitimes携手环信新春送好礼
  16. 电饭锅鸿蒙系统,有了美的轻食电饭煲,人们更加确定了做饭工具的重要性
  17. 大家都用什么Maven插件?及本人的几个常用插件分享
  18. 上网操作1000问(供初學者)
  19. 用上office365后配合RaiDrive效率如何提高
  20. 【Java、Redis】通过中心经纬度与半径获取范围内的结果集(类似附近的人)

热门文章

  1. r语言和python-R VS Python:R语言是否真的过时了?
  2. python流程控制-Python 流程控制
  3. python3d动态图-Python图像处理之gif动态图的解析与合成操作详解
  4. 学python需要英语基础吗-英语基础一般,如何才能学习C语言编程和Python
  5. python填写excel-Python|读、写Excel文件(三种模块三种方式)
  6. python自动测试p-python自动化测试_8
  7. python雷达图-Python成绩单雷达图
  8. python第三方库numpy-谁能介绍下Python生态中的第三方库NumPy
  9. 初学python还是swift-iOS 将来 Swift 也许会取代 Python
  10. python在哪写代码-python的代码写在哪里,怎么样运行python代码