关于数组的用法,下面举两个例子
例1:
using System;
class Program
{
static void Main(string[] args)
{
//需要说明的是,C#的数组和Java还有C++中的数组是不太一样的,这里的声明数组的[]只能跟在数据类型的后面
int[] a;
//int[3] a; //这样是错误的,不能直接给定数组元素个数
//而给数组赋值,可以在声明时赋值,也可以声明后赋值
int[] t;
t = new int[] { 9, 8, 7 };
int[] number = { 0, 9, 4, 3, 5, 7, 6, 2, 8, 1 };
Console.WriteLine("number数组的长度为:{0}", number.Length);
Console.WriteLine("number数组的维数为:{0}", number.Rank.ToString());
foreach (int num in number) //遍历数组元素
{
//先前说过,{0}类似于C中的%后面加个字母,即格式化输出,如下,输出的结果占10位
Console.WriteLine("number数组中的元素分别是:{0, 10}", num.ToString()); //输出数组元素
}
//对数组元素进行排序,到底都适用于什么数据类型,我只试了两个,int和string,string就不写了
Array.Sort(number);
foreach (int num in number)
{
Console.WriteLine("数组排序后元素顺序变为:{0, 10}", num.ToString());
}
Array.Reverse(number);
foreach (int num in number)
{
Console.WriteLine("反转数组元素为:{0}", num.ToString());
}
//也可以这样
int[] m = new[] { 1, 2, 3 };
int[] n = new int[3] { 1, 2, 3 };
//上面只用了int,对于其它类型,也是可以类似的
/*多维数组*/
//二维数组
float[,] f; //声明二维数组,与C++Java不同的是,对为数组是这样的
float[][] f0; //也可以这样
float[,] f1 = new float[3, 3]; //分配数组元素个数
Console.WriteLine("f1数组的长度为:{0}\n", f1.Length);
Console.WriteLine("f1数组的维数为:{0}\n", f1.Rank.ToString());
float[,] f2 = { { 1, 2, 3 }, { 2, 3, 4 }, { 3, 4, 5 } };
//三维数组
bool[, ,] bs;
bs = new bool[2, 3, 3]
{
{
{true, false, true},
{false, true, false},
{true, false, true}
},
{
{true, true, true},
{false, false, false},
{true, false, true}
}
};
Console.WriteLine("bs数组的长度为:{0}\n", bs.Length);
Console.WriteLine("bs数组的维数为:{0}\n", bs.Rank.ToString());
string[][][] s;
//交错数组
char[][] ch = {
new char[]{'a', 'b', 'c'},
new char[]{'c', 'd'},
new char[]{'e'},
};
//交错数组输出的数组长度为其new出的最大的数组的长度
Console.WriteLine("ch数组的长度为:{0}\n", ch.Length);
Console.ReadKey();
}
}
输出结果为:
例2:
using System;
class Program
{
static void Main(string[] args)
{
//下面,是举了一些关于数组的方法
int[] a = new int[5] { 1, 2, 3, 4, 5 };
for (int i = 0; i < a.Length; i++)
{
Console.Write("{0} ", a[i]);
//Write方法和WriteLine方法的区别,就好像Java中System.println和System.print的关系一样,只是多了个换行功能
//Console.WriteLine("今天天气还算可以!");
}
Console.WriteLine();//这是用了一个换行
Console.WriteLine("Clear方法使用后,数组的元素变成这样:");
//Array.Clear(a, 0, 3);
Array.Clear(a, 1, 4);
for (int i = 0; i < a.Length; i++)
{
//从输出结果可以看出,这个方法中,后两个参数,第一个是数组下标,另一个是自下标起往后的多少个元素,最终这些元素会被赋予0这个值
Console.Write("{0} ", a[i]);
}
Console.WriteLine();
//这是声明了Array类的对象,并使用CreateInstance方法构造了一个二维数组
Array str = Array.CreateInstance(typeof(String), 2, 2);
//SetValue方法用来设定数组元素的值
str.SetValue("C", 0, 0);
str.SetValue("C++", 0, 1);
str.SetValue("Java", 1, 0);
str.SetValue("C#", 1, 1);
for (int i = 0; i < str.GetLength(0); i++) //GetLiength方法是得到多维数组相应维数的元素个数
{
for (int j = 0; j < str.GetLength(1); j++)
{
Console.WriteLine(str.GetValue(i, j));//GetValue方法用来获取数组相应的元素
}
}
Console.ReadKey();
}
}
输出结果为:
关于数组的方法还有很多,可以参考MSDN库——MSDN
这些博客主要是讲我在学C#(我主要看的书是《C#本质论第三版》)的过程中,发现它和C/C++、Java的不尽相同之处,都是自己的见解,也是比较浅显的知识,如有错误,欢迎指出
如无说明,所有程序都是在Visual Studio 2012下运行通过