どの言語であっても、集合の概念は必ず存在します。最も単純で直感的なコレクションは配列です。配列はメモリ内の連続した空間です。 C# の配列
の定義を見てください。
1. int[] intArry;
intArry= new int[6];
ここで int 配列型変数 intArry が宣言され、6 単位の int 配列オブジェクトが保存されます;
int[,] intArry2 = new int[ 3, 4];
int の 2 次元配列型変数を宣言し、3 行 4 列の配列オブジェクトを初期化します
int[][] intArry3 = new int[9][];
配列単位を int 配列として宣言します。型配列変数。各配列要素は int 配列型のオブジェクト参照です。
オブジェクト指向言語であるため、参照とオブジェクトについては上で説明しました。実際:
1. .net Framework の配列は単純なデータ構造ではなく、配列型と呼ばれる型です。
2. .net Framework の配列変数は、配列型オブジェクトへの参照を格納します。つまり、配列は物体。
すべての .net Framework 配列 (int[]、string[]、object[]) は Array から継承されたサブクラスです。通常、Array クラスは直接使用されません。これは、C# を含む .net Framework のさまざまな言語が、配列オブジェクトを int[]、string[] などの独自の特別な構文にマップするためです。
連絡先コードの一部を見てみましょう:
public class MyArray { /// <summary> /// 定义数组测试 /// </summary> public void TestInt() { int[] intArry1 = null; intArry1 = new int[6]; int[,] intArry2 = new int[3, 4]; int[][] intArry3 = new int[9][]; } /// <summary> /// 值类型数组转引用类型数组测试 /// </summary> /// <param name="array"></param> /// <returns></returns> public static object[] Int32ToArrayOfObject(int[] array) { object[] objArray = new object[array.Length]; for (int i = 0; i < array.Length; i++) { objArray[i] = array[i]; } return objArray; } /// <summary> /// 数组的主要特性测试 /// </summary> public static void MainTest() { //声明一个包含是个元素的字符串型数组 string[] sArray = new string[10]; //访问数组 //赋值 for (int i = 0; i < sArray.Length; i++) { sArray[i] = @"string" + i; } ConsoleToClientString(sArray); //另一种方式声明数组,所谓的枚举法 sArray = new string[] { "TestString0", "TestString1", "TestString2" }; ConsoleToClientString(sArray); //数组复制 string[] newSArray = sArray.Clone() as string[]; ConsoleToClientString(newSArray); //使用Array的CreateInstance方法声明10元素的整形数组 int[] intArray = Array.CreateInstance(typeof(int), 10) as int[]; for (int i = 0; i < intArray.Length; i++) { intArray[i] = i; } ConsoleToClientInt(intArray); //数组之间的复制,指定位置,指定长度 int[] newIntArray = new int[20]; Array.Copy(intArray, 3, newIntArray, 4, intArray.Length - 3); ConsoleToClientInt(newIntArray); object[] objArray = sArray; ConsoleToClientObject(objArray); objArray = Int32ToArrayOfObject(intArray); ConsoleToClientObject(objArray); //数组的数组 int[][] intArrayArray = new int[9][]; Console.WriteLine("数组长度:" + intArrayArray.Length); //赋值 for (int i = 1; i < 10; i++) { intArrayArray[i - 1] = new int[i]; for (int j = 1; j <= i; j++) { intArrayArray[i - 1][j - 1] = i * j; } } ConsoleToClientArrayArrayInt(intArrayArray); //二维数组 int[,] intArray2D = new int[9, 9]; Console.WriteLine(string.Format("二维数组 长度:{0},维数:{1}*{2}", intArray2D.Length, intArray2D.GetLength(0), intArray2D.GetLength(1))); for (int i = 1; i < 10; i++) { for (int j = 1; j <= i; j++) { intArray2D[i - 1, j - 1] = i * j; } } int count = 0; foreach (int item in intArray2D) { if (item > 0) { Console.Write("{0,2}", item); } if (++count >= 9) { Console.WriteLine(); count = 0; } } } static void ConsoleToClientArrayArrayInt(int[][] intArrayArray) { foreach (int[] item1 in intArrayArray) { foreach (int item2 in item1) { Console.Write("{0,2}", item2); } Console.WriteLine(); } Console.WriteLine(); } static void ConsoleToClientString(string[] sArray) { foreach (string item in sArray) { Console.Write(item + @","); } Console.WriteLine(); } static void ConsoleToClientInt(int[] intArray) { foreach (int item in intArray) { Console.Write(item + @","); } Console.WriteLine(); } static void ConsoleToClientObject(object[] objArray) { foreach (object item in objArray) { Console.Write(item.ToString() + @","); } Console.WriteLine(); } }
class Program { static void Main(string[] args) { MyArray.MainTest(); Console.ReadLine(); } }
上記のことから、次のことがわかります: 配列には参照型配列と値型配列がある 参照型配列の場合、要素は保存に使用されます。オブジェクトへの参照と値の初期化。値型配列の場合、要素は
オブジェクトの値を格納し、数値型の場合、初期値は 0 です。
を表し、多次元配列は各要素が配列オブジェクトである配列です。
上記は C# の基礎知識をまとめたものです: 基礎知識 (14) 配列の内容 その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。