必威体育Betway必威体育官网
当前位置:首页 > IT技术

C#新建数组

时间:2019-08-25 19:42:07来源:IT技术作者:seo实验室小编阅读:63次「手机版」
 

c#数组

            int[] num = { 1,2,3,4,5,6,7};
            int [] num1=new int[10];
            num1[2] = 9;
            int[] in1 = { 1, 2, 3, 4, 65, 4, 3, 2, 25, 15123, 53 };
            var arr = new int[] { 1, 2, 3, 4, 65, 4, 3, 2, 25, 15123, 53 };

数组创建可以包含许多对象或值的变量类型。但数组有一定的限制。最大的限制是一旦创建好数组,它们的大小就是固定的,不能在现有数组的末尾添加新项,除非创建一个新的数组。

集合类一般用于处理对象列表,其功能比简单数组要多,功能大多是通过实现System.Collections 名称空间中的接口而获得的,因此集合的语法已经标准化.

集合的功能(包括基本功能,例如,用[index]语法访问集合中的项)可以通过接口来实现,该接口不仅没有限制我们使用基本集合类,例如System.Array,相反,我们还可以创建自己的定制集合类。这些集合可以专用于要枚举的对象(即要从中建立集合的对象)。这么做的一个优点是定制的集合类可以是强类型化的。也就是说,从集合中提取项时,不需要把它们转换为正确的类型。另一个优点是提供专用的方法.

System.Collections 名称空间中的几个接口提供了基本的组合功能:

 IEnumerable 可以迭代集合中的项。

 ICollection(继承于IEnumerable)可以获取集合中项的个数,并能把项复制到一个简单的数组类型中。

 IList(继承于IEnumerable 和ICollection)提供了集合的项列表,允许访问这些项,并提供其他一些与项列表相关的基本功能。

 IDictionary(继承于IEnumerable 和ICollection)类似于IList,但提供了可通过键值(而不是索引)访问的项列表。

数组与集合的区别

对于简单的数组来说,只有用固定的大小来初始化数组,才能使用它。标准语法创建数组animalArray。

Animal[] animalArray = new Animal[2];

而ArrayList 集合不需要初始化其大小,所以可以使用以下代码创建列表animalArrayList:

ArrayList animalArrayList = new ArrayList();

这个类还有另外两个构造函数。第一个构造函数把现有的集合作为一个参数,把现有集合的内容复制到新实例中;而另一个构造函数通过一个参数设置集合的容量(capacity)。这个容量用一个int值指定,设置集合中可以包含的初始项数。但这并不是真实的容量,因为如果集合中的项数超过了这个值,容量就会自动增加一倍。

因为数组是引用类型(例如,Animal 和Animal 派生的对象),所以用一个长度初始化数组并没有初始化它所包含的项。要使用一个指定的项,该项还需要初始化,即需要给这个项赋予初始化了的对象。

ArrayList 集合可以用AddRange()方法一次添加好几个项。这个方法接受带有ICollection 接口的任何对象,包括前面的代码所创建的animalArray 数组:

animalArrayList.AddRange(animalArray);

迭代器

迭代器的定义是,它是一个代码块,按顺序提供了要在foreach 循环中使用的所有值。一般情况下,这个代码块是一个方法,但也可以使用属性访问器和其他代码作为为迭代器

无论代码块是什么,其返回类型都是有限制的。与期望正好相反,这个返回类型与所枚举的对象典型不同。两种可能的返回类型是前面提到的接口类型lIEnumerable 和IEnumerator。使用这两个类型的场合是:

 如果要迭代一个类,可使用方法GetEnumerator(),其返回类型是IEnumerator。

 如果要迭代一个类成员,例如一个方法,则使用IEnumerable。

在迭代器块中,使用yield 关键字选择要在foreach 循环中使用的值。其语法如下:

yield return <value>;

可以实现一个迭代器,来控制循环代码如何在其循环过程中取值。要迭代一个类,需要实现GetEnumerator()方法,其返回类型是IEnumerator。要迭代类的成员,例如方法,可以使用IEnumerable返回类型。在迭代器的代码块中,使用yield 关键字返回值

is 运算符的语法如下:

<operand> is <type>

这个表达式的结果如下:

 如果<type>是一个类类型,而<operand>也是该类型,或者它继承了该类型,或者它可以封箱到该类型中,则结果为true。

 如果<type>是一个接口类型,而<operand>也是该类型,或者它是实现该接口的类型,则结果为true。

 如果<type>是一个值类型,而<operand>也是该类型,或者它可以拆箱到该类型中,则结果为true。

IComparable 和IComparer 接口是.NET Framework 中比较对象的标准方式。这两个接口之间的差别如下:

 IComparable 在要比较的对象的类中实现,可以比较该对象和另一个对象。

 IComparer 在一个单独的类中实现,可以比较任意两个对象

一般使用IComparable 给出类的默认比较代码,使用其他类给出非默认的比较代码。IComparable 提供了一个方法CompareTo(),这个方法接受一个对象。

.NET Framework 在类Comparer 上提供了IComparer 接口的默认实现方式,类Comparer 位于

System.Collections 名称空间中,可以对简单类型以及支持IComparable 接口的任意类型进行特定文化的比较

as 运算符使用下面的语法,把一种类型转换为指定的引用类型:

<operand> as <type>

这只适用于下列情况:

 <operand>的类型是<type>类型

 <operand>可以隐式转换为<type>类型

 <operand>可以封箱到<type>类型中

如果不能从<operand>转换为<type>,则表达式的结果就是null。

相关阅读

C# 多线程编程实战(一)--线程基础

C#多线程编程实战(一):线程基础1.1 简介多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力

合并两个数组的方法

1.数组的方法concat():concat();方法为赋值并新增,返回一个新数组,只适合无嵌套的数组,concat();会将数组最外层的中括号去掉,然后对

JS数组(Array)应用大全!!!

                                                 【书山有路勤为径,学海无涯苦作舟】 一、生成数组

C# 名字五格测试

先申明,看着这个罗莊罗大师罗半仙的文章 https://blog.csdn.net/luozhuang/article/details/8725396 https://blog.csdn.net/luozh

解决“c#:未将对象引用设置到对象的实例”

在用c#操作数据库的时候遇到了该问题,由此记录一下解决方法:调试的时候无法连接到数据库,提示“未将对象引用设置到对象的实例”。我

分享到:

栏目导航

推荐阅读

热门阅读