C# プログラミング 初心者メモ @ ウィキ
配列
最終更新:
Bot(ページ名リンク)
-
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 | 配列 | - | ★★★☆☆ |