如果需要使用同一类型的多个对象,就可以使用集合或者数组。
C#中用特殊的符号声明、初始化和使用数组。
Array 类在后台发挥作用,为数组中元素的排序和过滤提供好几种方法。
使用枚举器可以迭代数组中元素。
如果需要使用不同类型的多个对象,可以使用 Tuple 元组类型。
数组
简单数组
数组是一种数据结构,可以包含同一个类型的多个元素。
数组的声明
在声明数组时,应该先定义数组中元素的类型,其后是一会方括号和应该变量名。
int [] myArray;//一个整形类型数组
数组的初始化
数组是引用类型,必须给它分配堆上的内存。
使用 new 运算符,指定数组中元素的类型和数量来初始化数组的变量。
myArray = new int [4];
这里初始化数组的大小为4的整形数组。
在声明数组和初始化数组后,变量myArray就引用了4个int整型值。
在指定了数组大小后,如果不复制数组中所有元素,就不能重新设置数组的大小,如果事先不知道数组中应该含有多少元素,就应该使用集合。
除了在两个语句中声明和初始化数组之外,还可以在一个语句中声明初始化数组。
int[] myArray = new int[4];
还可以使用数组初始化器为数组的每一个元素赋值,数组初始化只能在初始化数组声明变量时使用,不能在声明数组之后使用
int[] myArray = new int[4] { 1,2,3,4};//如果赋值必须为长度的每一个位置赋值
如果使用花括号初始化数组,还可以不指定数组大小,编译器会自动统计元素个数得到数组长度。
int[] myArray = new int[] { 1,2,3,4,5,6,777};
使用C#编译器还有一种简化形式,使用花括号可以同时声明和初始化数组,编译器生成的代码与前面例子相同
int[] myArray = { 1,2,3,4,5,6,777};
数组的访问
在声明和初始化数组后,就可以使用索引器访问其中的元素。数组只支持整形参数的索引器。
通过索引器传递元素编号,就可以访问数组了。
索引器从0开始,表示第一个元素,依次递增。
可以传递给索引器的值为数组长度减一。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;
namespace ConsoleApp11
{
class Program
{
static int[] myArray = { 1,2,3,4,5,6,777};
static void Main(string[] args)
{
int x1 = myArray[0];
x1 = 100;
WriteLine(x1);//100
WriteLine(myArray[0]);//1
ReadKey();
}
}
}
注意,数组是引用,而内容是值类型。
所以这里x1得到的是数组第一个元素的值,对x1值的更改不影响数组中元素的值。
如果要改变数组中元素的值应该为
myArray[0] = 777;
如果不知道数组中元素个数,可以使用for循环迭代数组,得到数组中元素。
for (int i = 0; i < myArray.Length; i++)//变量,循环条件,变量运算
{
WriteLine(myArray[i]);
}
也可以使用foreach
foreach(var val in myArray)
{
WriteLine(val);
}
对数组进行迭代,获得其中的每一个元素
使用引用类型
除了可以声明预定义类型的数组,还可以声明自定义类型的数组。
但是,如果数组中的元素是引用类型,就必须为每个元素分配内存。
如果使用了未分配内存的元素,会抛出异常。