C# プログラミング 初心者メモ @ ウィキ

配列

最終更新:

csharpmemo

- view
管理者のみ編集可

配列

概要

・配列は、1 次元配列、多次元配列、またはジャグ配列のいずれかになる.
・配列要素の初期値は,規定値は0,参照要素はNullとなる.
・n個の要素の配列は,0,1,・・・n-1のインデックスが付けられる.
・配列の要素はどのような型でもかまわない.
・配列型は,Array型から派生した参照型
・IEnumerableとIEnumerableを実装する.
・foreach反復処理が可能

文法

配列の宣言
型名[] 配列名;
配列の作成
配列変数 = new 型名[配列の長さ];

   class Program
   {
       static void Main()
       {
           int[] array = new int[4];
           array[0] = 10;
           array[1] = 11;
           array[2] = 12;
           array[3] = 13;
           
           for(int i=0; i < array.Length; i = i + 1)
           {
               Console.WriteLine(array[i]);
           }
           Console.ReadLine();
       }
   }
出力
10
11
12
13

プロパティ

Length すべての次元内の要素の総数を表す32ビット整数を取得する
配列名.Length
Rank ランク(次元数)を取得する
配列名.Rank
SyncRoot アクセスを同期するために使用できるオブジェクトを取得する
配列名.SyncRoot

   class Program
   {
       static void Main()
       {
           int[] array = new int[4];
           array[0] = 10;
           array[1] = 11;
           array[2] = 12;
           array[3] = 13;
           
           Console.WriteLine(array.Length);
           Console.WriteLine(array.Rank);
           Console.WriteLine(array.SyncRoot);
           Console.ReadLine();
       }
   }
出力
4
1
System.Int32[]

メソッド

clear 配列の型に応じて0,false,nullに設定する
clear(配列名,開始位置,削除する数)

   class Program
   {
       static void Main()
       {
           int[] array = new int[4];
           array[0] = 10;
           array[1] = 11;
           array[2] = 12;
           array[3] = 13;
           
           Console.WriteLine("元の配列");
           PrintArray(array);
           Array.Clear(array,1,2);
           Console.WriteLine("削除後");
           PrintArray(array);
           Console.ReadLine();
       }
       static void PrintArray(Array myArray)
       {
           foreach (int i in myArray)
           {
               Console.WriteLine(i);
           }
       }
   }
出力
元の配列
10
11
12
13
削除後
10
0
0
13
Clone 配列の簡易コピー
(配列の型)array.Clone()
Copy 配列の簡易コピー
Array.Copy(コピー元,コピー先,コピーする要素数);
Array.Copy(コピー元,コピー元開始位置,コピー先,コピー先開始位置,コピーする要素数);
ConstrainedCopy 配列の簡易コピー
Array.ConstrainedCopyコピー元,コピー元開始位置,コピー先,コピー先開始位置,コピーする要素数);
・Copyと異なりコピーが完全に成功しない限り、変更は一切適用しない.


    class Program
   {
       static void Main()
       {
           int[] array = new int[4];
           array[0] = 10;
           array[1] = 11;
           array[2] = 12;
           array[3] = 13;
           
           int[] array2 = array;
           int[] arraycopy = new int[4]; 
           Array.Copy(array, arraycopy,2);
           int[] arrayclone = (int[])array.Clone();
           array[1] = 14;
           arrayclone[3] = 15;
           
           Console.WriteLine("array");
           PrintArray(array);
           Console.WriteLine("array2");
           PrintArray(array2);
           Console.WriteLine("arraycopy");
           PrintArray(arraycopy);
           Console.WriteLine("arrayclone");
           PrintArray(arrayclone);
           
           Console.ReadLine();
       }
       static void PrintArray(Array myArray)
       {
           foreach (int i in myArray)
           {
               Console.WriteLine(i);
           }
       }
   }
出力
array
10
14        ←array[1] = 14;により値が変化
12
13        ←arrayclone[3] = 15;によっても値が変化しない
array2
10
14        ←array[1] = 14;により値が変化
12
13        ←arrayclone[3] = 15;によっても値が変化しない
arraycopy
10
11        ←array[1] = 14;によっても値が変化しない
0
0
arrayclone
10
11        ←array[1] = 14;によっても値が変化しない
12
15        ←arrayclone[3] = 15;により値が変化
Reverse
範囲内の要素の順序を反転させます.
Sort
オブジェクト内の要素を並べ替えます.

   class Program
   {
       static void Main()
       {
           int[] array = new int[4];
           array[0] = 13;
           array[1] = 11;
           array[2] = 12;
           array[3] = 10;
           
           Console.WriteLine("ソート前");
           PrintArray(array);
           Array.Sort(array);
           Console.WriteLine("ソート後");
           PrintArray(array);
           Array.Reverse(array);
           Console.WriteLine("リバース後");
           PrintArray(array);
           Console.ReadLine();
       }
       static void PrintArray(Array myArray)
       {
           foreach (int i in myArray)
           {
               Console.WriteLine(i);
           }
       }
   }
出力
ソート前
13
11
12
10
ソート後
10
11
12
13
リバース後
13
12
11
10


参考文献

HP リンク 内容 評価
stack*(スタックアスタリスク) C#プログラミング入門第3回:C#基礎 パート1(クラスライブラリ) - ★★☆☆☆
@IT .NET TIPS C#で配列を宣言するには? null参照と要素数0の配列についての説明 ★★★★☆
++C++;// 未確認飛行 C++ 配列(C# によるプログラミング入門) 詳細な説明 ★★★★★
WisdomSoft 配列 - ★★★☆☆


タグ:

配列
記事メニュー
目安箱バナー