C#3.0学习笔记(6)详谈数组

1,  数组的定义及重要细节?

  定义:数组是由一个变量名称表示的一组同类型的数据元素,每个元素通过变量名称和一个或多个方括号的索引名称来访问。

  注意:1> 数组一旦被创建,大小就固定了。C#不支持动态数组。

           2> 数组索引号从0开始。也就是说如果维度长度是n,索引号范围是从0到n-1。

           3> 数组属于引用类型,即引用在栈上或堆上,但是数组对象本身总是在堆上。

2,  数组的分类?

  1>     一维数组

  2>     矩形数组(即某个维度的所有子数组有相同长度)

  3>     交错数组s(即可以有不同长度的子数组)

3,  数组的声明,初始化和遍历数组元素?

  一维数组:

namespace array1
{
class Program
{
static void Main(string[] args)
{
//int[] arr1;//声明数组
//arr1 = new int[] { 10, 20, 30, 40, 50 };//初始化数组
int[] arr1 = new int[] { 10, 20, 30, 40, 50 };//声明和初始化可以一步完成。等价于:int[] arr1 = { 10, 20, 30, 40, 50 };//快捷语法
//var arr1 = new[] {10, 20, 30, 40, 50 }; //隐式类型数组。

//遍历数组
//方法一:使用for循环:
for (int i = 0; i < arr1.Length; i++)
{
Console.WriteLine("数组元素{0}的值为:{1}",i,arr1[i]);
}
//方法二:使用foreach语句:
//foreach (int item in arr1)//迭代变量item表示数组中的每一个元素。
//{
// Console.WriteLine("元素的值为:{0}", item);
//}
Console.ReadKey();
}
}
}

  程序输出结果为:


  二维数组(矩形数组):

namespace array2
{
class Program
{
static void Main(string[] args)
{
int[,] arr2 = new int[,] { {0,1,2},{10,11,12}};//声明和初始化二维数组。
//遍历数组
//方法一:使用for循环:
//for (int i = 0; i < 2; i++)
//{
// for (int j = 0; j < 3; j++)
// {
// Console.WriteLine("元素[{0},{1}]的值为:{2}",i,j,arr2[i,j]);
// }
//}
//方法二:使用foreach语句:
foreach (int item in arr2) //对于多维数组,元素的处理次序是最右边的索引号最先递增的,当索引从0到长度减1时,下一个左边的索引被递增,右边的索引被重置为0.
{
Console.WriteLine("元素的值分别为:{0}",item);
}
Console.ReadKey();
}
}
}

  程序输出结果为:

         交错数组:

namespace arr3
{
class Program
{
static void Main(string[] args)
{
int[][] arr3 = new int[2][];
/*交错数组的实例化过程如下:
首先,实例化顶层数组。
其次,分别实例化每一个子数组,把新建数组的引用赋值给包含它们的数组的合适元素
*/
arr3[0] = new int[] { 10,11};
arr3[1] = new int[] { 12,13,14};
//遍历数组:
foreach (int[] array in arr3)
{
Console.WriteLine("Starting new array");
foreach (int item in array)
{
Console.WriteLine("数组的元素分别为:{0}",item);
}
}
Console.ReadKey();
}
}
}

   程序输出结果为:

4, 数组的一些重要属性和方法总结?

namespace array4
{
class Program
{
static void Main(string[] args)
{
int[] arr4 = new int[] { 15,20,5,25,10};
PrintArray(arr4);
Console.WriteLine();//换行

Array.Sort(arr4);//方法Sort,排序,默认为升序
PrintArray(arr4);
Console.WriteLine();

Array.Reverse(arr4);//方法Reverse,反转
PrintArray(arr4);
Console.WriteLine();
Console.WriteLine();

Console.WriteLine("维度为:{0},长度为:{1}", arr4.Rank, arr4.Length);//属性Rank表示数组维度,属性Length表示数组长度。
Console.WriteLine("GetLength(0)={0}", arr4.GetLength(0));//方法GetLength()表示返回数组中指定维度的长度。
Console.WriteLine("GetType()={0}", arr4.GetType());//方法GetType()表示返回数组类型。
Console.ReadKey();

}
protected static void PrintArray(int[] a)
{
foreach (int item in a)
{
Console.Write("{0}", item);
Console.Write("");//在每个数组元素后面加一空格。
}
}
}
}

   程序输出结果为:

哎,很晚了,要睡觉了,先总结到这儿吧,不足的部分请大家补充补充啊!

原文地址:https://www.cnblogs.com/mcgrady/p/2229674.html