/*
数组的知识点学习
* 数组是通用的数据结构,在C#当中使用数组,需要创建System.Array类型的对象。
* 数组是可索引的数据的集合。(数据的类型既可以是内置的,也可以是自定义的)
* C#当中数组就是对象本身。数组是System.Array类的一个声明的实例,在使用数组的时候,也可以使用此类的所有方法和属性。
*/
namespace MyArray
{
class Program
{
static void Main(string[] args)
{
string[] str = new string[5];//声明一个数组并对它进行实例化。并且分配了5个字符串的内存空间,然后可以给该数组元素添加值。
string[] str2 = new string[5] { "I", "am", "a", "Array", "object" };//这种方式被称为初始化列表
//2、关于数组元素的存取
//存:1、直接通过索引进行存储。 2、通过调用Array类中的SetValue方法进行存储。
str[0] = "I";
str.SetValue("am", 1);//参数 object value(要存储的值),int index(索引)
//取:1、直接通过索引进行获取。2、通过调用Array类中的GetValue方法进行存储。
string s = str[0];
string s1 = str.GetValue(1).ToString();//参数:int index 。需要注意的是 获取到的元素的值是一个object类型的值,获取后需要转化为指定的类型,此处为string类型
//3、常用的检索数组元素数据的方法和属性
/*
Length:返回数组所有的维数内的元素的总数量。
* GetLength:返回指定维数内元素的数量。
* Rank:返回数组的维数。
* GetType:返回当前数组实例的类型
*/
object[] obj = new string[7];
Type type = obj.GetType();
if (type.IsArray)
{
Console.WriteLine("obj 实例的类型是:{0}", type);//输出:obj 实例的类型是:System.String[]
}
else
{
Console.WriteLine("该对象不是一个数组!");
}
//4、str.GetUpperBound();//参数:int dimension 获取System.Array指定维度的上限,从零开始
//遍历数组
for (int i = 0; i <= str.GetUpperBound(0); i++)//需要注意的是这里是"<=" str.Length=str.GetUpperBound(0)+1
{
}
//5、多维数组
//声明并实例化一个多维数组, C#当中 多维数组的维数可以达到32维
int[,] arr1 = new int[4, 5];
int[,] arr2;
arr2 = new int[4, 5];
/*
当初始化带有初始化列表的数组时,不用说明数组的上限,编译器会根据初始化表中的数据计算出每一维的上限
*/
int[,] arr3 = new int[,] {
{1,2,3,4,5},
{1,2,3,4,5},
{1,2,3,4,5},
{1,2,3,4,5}
};
arr3.SetValue(9, 0, 2);
Console.WriteLine(arr3.GetValue(0, 2));
Console.WriteLine(arr3.GetValue(0, 3));
/*
多维数组的存取
* 存:可以通过索引 可以通过 System.Array类中的SetValue方法获取(二位的可以,多维的就不可以使用了)
* 取:可以通过索引,可以通过 System.Array类中的GetValue(int index1,int index2);维度,索引
*/
//6、参数数组
/*
允许提供任意数量的参数,如果是在多参的方法中使用参数数组,则应把参数数组放在所有参数的后边,否则编译器会报异常
*/
Console.WriteLine(GetSumArr(1, 2, 3));//6
Console.WriteLine(GetSumArr(4, 5, 6));//15
//7、锯齿状的数组
/*
之前使用逗号对维数分割的数组,每行都有相同元素数量的结构
* 锯齿状数组是一种每行都能组成数组的数组,它的每一个维度就是一个一维数组。
* 每一行元素的数量都可能不相同
*/
int[][] arr4 = new int[5][];//
int[] i1 = new int[5];
int[] i2 = new int[6];
int[][] arr5 = new int[][] { i1, i2 };
Console.ReadKey();
}
/// <summary>
/// 获取指定int类型数组中元素的总和
/// </summary>
/// <param name="arr"></param>
/// <returns></returns>
static int GetSumArr(params int[] arr)
{
int sum = 0;
for (int i = 0; i <= arr.GetUpperBound(0); i++)
{
sum += arr[i];
}
return sum;
}
}
}
黑马程序员_C#数组的学习
最新推荐文章于 2022-07-11 21:16:45 发布