基本数组
数组的定义:存储相同数据类型的集合
第一种写法:动态分配了内存空间
int[] intArray = new int[4];
第二种写法
int[] intArray = {1,2,3,4};
第三种写法
int[] intArray = new int[4]{1,2,3,4};
初始化数组,要么给定其长度,要么初始化数组元素
实际上我们的int[] 它的原型为Array
而int[]数组可以 用foreach循环的原因归根结底为Array类本身已经实现了IEnumrable这个接口。
访问数组元素
intArray[0];访问数组中第0个位置储存的元素。
当数组访问越界时,程序崩溃!
遍历数组
for循环遍历
for(int i = 0;i<intArray.Length;i++)
{
Console.WriteLine ("下标:{0},值{1}",i,intArray[i]);
}
foreach循环遍历
foreach (var item in intArray) {
Console.WriteLine ("数组的元素为:" + item);
}
如何修改数组里面的元素
通过索引取值进行赋值
intArray[2] = 10.0f; 这是错误的因为数据类型不对
intArray[2] = 10; 这是正确的
Array类型的数组
因为Array类是抽象类,所以不能被实例化,但是Array类有一个方法是我们能够创建Array类型的数组
CreateInstance();方法的参数是 一个Type类型和一个int类型,分别表示了数组的类型和数组的长度。
Array arr = Array.CreateInstance (typeof(int), 5);
以上代码就是创建了一个 长度为5的int类型的数组。
arr.SetValue (1, 0);
这是在数组中插入元素的方法第一个参数是数组元素,第二个参数是数组的位置,也就是下标。
遍历数组
for (int i = 0; i < 3; i++) {
Console.WriteLine (a.GetValue(i));//该方法获取下标为i的数组
}
ArraySegment<T>
int[] intArray1 = { 1, 2, 3, 4};
int[] intArray2 = { 5, 6, 7, 8 };
var se1 = new ArraySegment[2] {
new ArraySegment(intArray1, 0, 3),
new ArraySegment(intArray2, 3, 1)
};
Print (se1);
static void Print(ArraySegment[] segements)
{
foreach (var segement in segements) {
for (int i = segement.Offset; i < segement.Count+segement.Offset; i++) {
Console.WriteLine (segement.Array[i]);
}
}
}