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("");//在每个数组元素后面加一空格。
}
}
}
}
程序输出结果为:
哎,很晚了,要睡觉了,先总结到这儿吧,不足的部分请大家补充补充啊!