博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CLR Via CSharp读书笔记(16):数组
阅读量:6655 次
发布时间:2019-06-25

本文共 2143 字,大约阅读时间需要 7 分钟。

初始化数组元素

class Program{    static void Main(string[] args)    {        String[] names = new String[] { "Adian", "Grant" };        // 隐式类型的局部变量        var myNames = new String[] { "Adian", "Grant", null };        // 隐式类型的局部变量和隐式类型的数组功能        var myAnotherNames = new[] { "Adian", "Grant", (123).ToString() };        // 隐式类型的局部变量、隐式类型的数组和匿名类型功能        var kids = new[] { new { Name = "Adian" }, new { Name = "Grant" } };        foreach (var kid in kids)        {            Console.WriteLine(kid.Name);        }    }}

数组协变性:

将数组从一种类型转换为另一种类型;利用协变性时,应该清楚由此而来的性能损失。

class Program{    static void Main(string[] args)    {        FileStream[,] fs2dim = new FileStream[5, 10];        Object[,] o2dim = fs2dim;        Stream[,] s2dim = (Stream[,])o2dim;        // 能通过编译,但在运行时会抛出InvalidCastException异常        String[,] st2dim = (String[,])o2dim;        Int32[] i1dim = new Int32[5];        Object[] o1dim = new Object[i1dim.Length];        // 不能将值类型的数组转型为其他任何类型,因此使用Array.Copy        // 将数组中的每一个元素转换为目标数组中的元素类型,并将其复制过去        Array.Copy(i1dim, o1dim, i1dim.Length);        Console.ReadLine();    }}

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

声明一个数组变量FileStream[] fsArray; System.Array类型定义的所有实例方法和属性都将由FileStream[]继承,这些方法和属性能通过fsArray变量调用。此外,fsArray还可以作为参数,用以调用System.Array类型公开的用于数组处理的静态方法;

所有的数组都隐式实现IEnumerable, ICollection和IList

创建一个一维0基数组类型时,CLR会自动使数组类型实现IEnumerable<T>, ICollection<T>和IList<T>,同时,如果T是引用类型,还会为数组类型的所有基类型实现这三个接口;如果是值类型,则不会为基类型实现这三个接口。

class Program{    static void Main(string[] args)    {        // 引用类型的数组        // CLR会实现IEnumerable
, ICollection
和IList
// 以及IEnumerable
, ICollection
和IList
// 以及IEnumerable
, ICollection和IList FileStream[] fsArray; // 值类型的数组, // CLR只会实现IEnumerable
, ICollection
和IList
DateTime[] dtArray; Console.ReadLine(); }}

数组的传递和返回

数组作为实参传给一个方法时,实际传递的是对该数组的引用。如果不想数组被修改,必须生成数组的一个拷贝,并将拷贝传给方法。需要注意的是Array.Copy执行的是浅拷贝,如果数组元素是引用类型,新数组将引用现有的对象。

最好设计为返回对含有0个元素的一个数组的引用,而不是返回null。

创建下限非零的数组

使用Array.CreateInstance可以创建非零下限的数组,可以查阅其重载的方法。

 

 

转载于:https://www.cnblogs.com/thlzhf/archive/2012/12/06/2805464.html

你可能感兴趣的文章
在二进制树中的节点之间的最大距离(最长路径树)——递归解决方案
查看>>
MySQL体系结构以及各种文件类型学习汇总
查看>>
Oracle用户解锁的三种办法及默认的用户与密码
查看>>
Hibernate学习笔记
查看>>
ubuntu-15.04-desktop-amd64.iso:ubuntu-15.04-desktop-amd64:安装Oracle11gR2
查看>>
全新的membership框架Asp.net Identity(2)——绕不过的Claims
查看>>
Windows环境下的NodeJS+NPM+Bower安装配置
查看>>
Android控件Editext、TextView属性详解
查看>>
BI项目简单备份策略
查看>>
mac常用快捷键,Mac文件重命名快捷键,Mac OS快速访问系统根目录
查看>>
leetcode先刷_Unique Binary Search Trees II
查看>>
日志分析概述
查看>>
iOS 使用xib后获取view的frame出错的问题
查看>>
C#编程总结(二)多线程基础
查看>>
[ios]cocos2dx获取设备的当前预言
查看>>
iOS8互动的新通知
查看>>
独立开发者复盘:手游研发犯过的8个错误(转)
查看>>
二维向量的叉积是标量还是向量?
查看>>
LeetCode 53 Spiral Matrix
查看>>
辛巴学院-Unity-剑英的c#提高篇(一)主循环
查看>>