第三部分 基本类型:第15章 数组

派生关系:
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);
}

第三部分 基本类型:第15章 数组

时间: 2024-08-27 21:49:53

第三部分 基本类型:第15章 数组的相关文章

第三部分 基本类型:第15章 枚举类型和位标志

15.1 枚举类型枚举类型定义了一组“符号名称/值”配对.例如,以下Color类型定义了一组符合,每个符号表示一种颜色. internal enum Color{ White, //赋值0 Red, //赋值1 Green, //赋值2 Blue, //赋值3 Orange //赋值4 } 枚举类型的好处:枚举类型容易编写.阅读和维护.枚举类型是强类型. 派生关系:System.Object -> System.ValueType -> System.Enum -> 枚举类型 枚举类型是

java第15章示例代码

import java.util.Scanner; /** * * @author asus第15章示例代码1 全桂群2017.4.9 * */public class Registter { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); String uname, pw

第 15 章 组合模式【Composite Pattern】

以下内容出自:<<24种设计模式介绍与6大设计原则>> 大家在上学的时候应该都学过“数据结构”这门课程吧,还记得其中有一节叫“二叉树”吧,我们上 学那会儿这一章节是必考内容,左子树,右子树,什么先序遍历后序遍历什么,重点就是二叉树的的遍历,我还记得当时老师就说,考试的时候一定有二叉树的构建和遍历,现在想起来还是觉的老师是正确的,树状结果在实际项目应用的非常广泛. 咱就先说个最常见的例子,公司的人事管理就是一个典型的树状结构,你想想你公司的结构是不是这样: 老大,往下一层一层的管理,

3.30日第八次作业,第14章,采购管理,15章,信息文档和配置管理

3.30日第八次作业,第14章,采购管理,15章,信息文档和配置管理   第14章.采购管理1.采购管理包括哪些过程?(记)P382-383 答:1).编制采购计划.2).编制询价计划.3).询价.招投标.4).供方选择.5).合同管理.6).合同收尾. 2.编制采购计划过程的成果是什么?P386-387 答:1).采购管理计划.2).采购工作说明书. 3.判断:每个采购工作说明书都来自于项目范围基准.P387 答:是的. 4.结合P388页表14-1,工作说明书应该清楚地描述哪些内容?P388

设计模式@第15章:代理模式

第15章:代理模式 一.代理模式(Proxy) (一)代理模式的基本介绍 代理模式:为一个对象提供一个替身,以控制对这个对象(被代理的对象)的访问.即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. 被代理的对象可以是远程对象.创建开销大的对象或需要安全控制的对象: 代理模式有不同的形式, 主要有三种 静态代理.动态代理 (JDK 代理.接口代理)和 Cglib 代理 (可以在内存动态的创建对象,而不需要实现接口, 他是属于动态代理

第15章 就不能换DB吗?—抽象工厂模式

由于抽象工厂在我们编程当中经常使用和常见,所有本篇文章对<大话设计模式>中的15章做了很详细的比较.通过一个Dao层可以更换访问任意数据库的例子来学习抽象工厂模式.例如:Dao层可以访问Sqlserver数据库,也可以访问Access数据库,当程序新增访问Oracle数据库时,无需修改现有代码,只需要添加访问Oracle相关的类就可以,实现了开闭原则.本篇文章的例子中每种数据库上都有User和Department表,我们Dao层对这两个表进行查询和插入操作. 最基本数据库访问 一下是访问Sql

紫书第三章 数组和字符串

1  序 系统的整理下第三章的学习笔记.例题代码是在未看书本方法前自己尝试并AC的代码,不一定比书上的标程好:习题除了3-8百度了求解方法,其它均独立完成后,会适当查阅网上资料进行整理总结.希望本博文方便自己日后复习的同时,也能给他人带来点有益的帮助(建议配合紫书--<算法竞赛入门经典(第2版)>阅读本博客).有不足或错误之处,欢迎读者指出. 2  例题 2.1  UVa272--Tex Quotes #include <stdio.h> int main() { bool log

C++ Primer Plus 第15章 友元、异常和其他

第15章 友元.异常和其他 1.友元不仅有友元函数,还能是友元类 还可以将类中的某一个成员函数指定为另一个类的友元 尽管友元被授予从外部访问私有部门的权限,单并不与面向对象编程思想相愽,相反,它们提高了公有接口的灵活性 2.类的成员函数作为其他类的友元,涉及到类的声明顺序. 还有一个函数作为两个类的友元 这方面内容看P607-611 3.嵌套类:在另一个类中声明的类被称为嵌套类 类嵌套与包含不一样.包含意味着将一个类对象作为另一个类的成员,而对类进行嵌套不创建类成员,而是定义了一种类型. 4.对

第15章 文本样式(下)

第 15章  CSS文本样式[下] 学习要点: 1.文本总汇 2.文本样式 3.文本控制 本章主要探讨 HTML5中  CSS文本样式,通过文本样式的设置,更改字体的大小.样式以及文本的方位. 一.文本总汇 我们重点了解一下 CSS文本样式中文本内容的一些设置方法,样式表如下 属性名 说明 CSS版本text-decoration 装饰文本出现各种划线. 1text-transform 将英文文本转换大小写. 1text-shadow 给文本添加阴影 3text-align 设置文本对齐方式 1