配列の操作
System.Arrayクラス
Array クラス (System)
配列を作成、操作、検索、並べ替えするためのメソッドを提供します。これにより、共通言語ランタイムのすべての配列の基底クラスとして機能します。
配列の作成、操作、検索、並べ替え、などなど。
以下のコードはそのうちのいくつかです。こんなのが沢山あります。
int[] array1 = { 3,5,1,4,10,8,2,5,10};
// コピー(コピー元のインデックス2の場所からコピー先のインデックス0位置から3要素分)
int[] destArray = new int[3];
Array.Copy(array1,2,destArray,0,3); // destArray:1,4,10
// 逆順に並び替え
int[] array2 = { 1,2,3,4,5};
Array.Reverse(array2); // 5,4,3,2,1
デリゲート
こういうパターンも結構あります。
int[] array = { 3,5,1,4,10,8,2,5,10};
// 最初に見つけた偶数
int even = Array.Find(array, i => (i %2 == 0)); // 4
// 配列中のすべての偶数
int[] evenArray = Array.FindAll(array, i => (i % 2 == 0)); // 4,10,8,2,10
スレッドセーフ
配列はスレッドアンセーフです。マルチスレッド対応のためにはロックが必要な場合があります。
int[] array = { 3,5,1,4,10,8,2,5,10};
lock (array.SyncRoot)
{
int sum = 0;
for (int count = 0; count < array1.Length; ++count)
{
sum += array1[count];
}
}
LINQ
集合への操作といえばLINQです。配列も操作可能です。こういう操作がいくらでも可能です。
using System.Linq; // これが必要
int[] array = { 3,5,1,4,10,8,2,5,10};
// 合計値の算出
int sum = array.Sum();
// 偶数のみ抽出
var ret = from i in array where i % 2 == 0 select i;
int[] evenArray1 = ret.ToArray();
// こっちも同じ
int[] evenArray2 = array.Where(val => val % 2 == 0).ToArray();