C# プログラミング 初心者メモ @ ウィキ
配列
最終更新:
csharpmemo
-
view
配列
概要
・配列は、1 次元配列、多次元配列、またはジャグ配列のいずれかになる.
・配列要素の初期値は,規定値は0,参照要素はNullとなる.
・n個の要素の配列は,0,1,・・・n-1のインデックスが付けられる.
・配列の要素はどのような型でもかまわない.
・配列型は,Array型から派生した参照型
・IEnumerableとIEnumerableを実装する.
・foreach反復処理が可能
・配列要素の初期値は,規定値は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 | 配列 | - | ★★★☆☆ |