猿教程 Logo

C#数组介绍

我们已经知道一个变量只能保存一个字面值,例如int x = 1 ;. 只有一个字面值可以分配给变量x。 假设,您要存储100个不同的值,那么创建100个不同的变量将很麻烦。 为了克服这个问题,C#引入了一个数组。

数组是一种特殊类型的数据类型,可以使用特殊语法顺序存储固定数量的值。

下图显示了数组如何按顺序存储值。


如上图所示,索引是一个从0开始的数字,用于存储该值。 您可以在数组中存储固定数量的值。 数组索引将按顺序增加1,直到最大指定的数组大小。


数组声明

可以使用类型名称后跟方括号[]来声明数组。

数组声明实例:

int[] intArray;  // can store int values
bool[] boolArray; // can store boolean values
string[] stringArray; // can store string values
double[] doubleArray; // can store double values
byte[] byteArray; // can store byte values
Student[] customClassArray; // can store instances of Student class



数组初始化

可以使用new关键字同时声明和初始化数组。 以下示例显示了初始化数组的方法。

// defining array with size 5. add values later on
int[] intArray1 = new int[5];
// defining array with size 5 and adding values at the same time
int[] intArray2 = new int[5]{1, 2, 3, 4, 5};
// defining array with 5 elements which indicates the size of an array
int[] intArray3 = {1, 2, 3, 4, 5};

在上面的例子中,第一个语句声明与初始化 int类型数组,可以存储五个int值。 数组的大小在方括号中指定。 第二个语句,做同样的事情,但它也将值分配给curley方括号{}中的每个索引。 第三个语句直接使用值初始化一个int数组,而不给出任何大小。 这里,数组的大小将自动是值的数量。

不指定大小的初始化无效。 例如,以下示例将给出编译时错误。

int[] intArray = new int[]; // compiler error: must give size of an array

数组延迟初始化

数组可以在声明之后初始化。 没有必要使用new关键字同时声明和初始化。 请参考以下示例。

string[] strArray1, strArray2;
strArray1 = new string[5]{ "1st Element",
                           "2nd Element", 
                           "3rd Element",
                           "4th Element",
                           "5th Element" 
                          };
strArray2 = new string[]{ "1st Element",
                           "2nd Element",
                           "3rd Element",
                           "4th Element", 
                           "5th Element" 
                          };

但是,在后期初始化的情况下,必须使用new关键字初始化,如上所述。 它不能通过只给数组赋值来初始化。

以下初始化无效:

string[] strArray;
strArray = {"1st Element","2nd Element","3rd Element","4th Element" };



获取数组元素

如上所示,可以在初始化时将值分配给数组。 然而,值也可以随机分配给单个指数,如下所示。

int[] intArray = new int[5];
intArray[0] = 10;
intArray[1] = 20;
intArray[2] = 30;
intArray[3] = 40;
intArray[4] = 50;

以相同的方式,您可以检索特定索引处的值,如下所示:

intArray[0];  //returns 10
intArray[2];  //returns 30

使用for循环通过使用数组的length属性来访问数组所有索引的值。

int[] intArray = new int[5]{10, 20, 30, 40, 50 };
for(int i = 0; i < intArray.Length; i++)
Console.WriteLine(intArray[i]);

运行结果:

10
20
30
40
50

数组的属性和方法

方法名称描述
GetLength(int dimension)返回指定维度中的元素数。
GetLowerBound(int dimension)返回指定维度的最低索引。
GetUpperBound(int dimension)返回指定维度的最高索引。
GetValue(int index)返回指定索引处的值。
属性描述
Length返回数组中元素的总数。

Array 帮助类

.NET提供了一个抽象类Array,作为所有数组的基类。 它提供了用于创建,操作,搜索和排序数组的静态方法。

例如,使用Array.Sort()方法对值进行排序:

Array帮助类实例:

int[] intArr = new int[5]{ 2, 4, 1, 3, 5};
Array.Sort(intArr);
Array.Reverse(intArr);

您可以使用Array类创建一个以索引1开始(不是默认开始索引0)的数组的实例,如下所示:

Array array = Array.CreateInstance(typeof(int),new int[1]{5},new int[1]{1});
array.SetValue(1, 1);
array.SetValue(2, 2);
array.SetValue(3, 3);
array.SetValue(4, 4);
array.SetValue(5, 5);
for (int i = 1; i <= array.Length; i++)
Console.WriteLine("Array value {0} at position {1}", array.GetValue(i), i);

运行结果:

Array value 1 at position 1
Array value 2 at position 2
Array value 3 at position 3
Array value 4 at position 4
Array value 5 at position 5
要点
  1. 数组以从基于零的索引开始的序列存储值。

  2. 必须在初始化时指定数组的大小。

  3. 可以使用索引器访问数组值。

  4. 数组可以是单维,多维和锯齿状的数组。

  5. Array帮助器类包含数组的实用程序方法。


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/CSharp/csharp-array.html