スキップしてメイン コンテンツに移動

投稿

6月, 2019の投稿を表示しています

C#/VBで配列に任意の値を一括代入する方法

C#/VBで配列に任意の値を一括代入する方法C#, VBで、配列に任意の値を一括代入する方法です。大量に要素数がある配列を、同じ値で初期化する時に便利なやり方です。LINQを使う配列への一括代入は、Linqを使うと一発(1行)で書けます。Enumerable.Repeatで一括代入int[] ary = Enumerable.Repeat<int>(10,5).ToArray();IEnumerator.Selectで一括代入int[] ary =(newint[5]).Select(n =>10).ToArray();【構文】
Enumerable.Repea(一括代入する値, 配列の件数)Forの初期化とLINQで一括代入の速度比較率直にFor文で1個ずつ値を代入する場合と、上で紹介した LINQで一括代入する方法の速度比較をしてみました。要素数For文Enumerable.RepeatIEnumerator.Select1万個1ミリ秒以下17ミリ秒20ミリ秒100万個5ミリ秒18ミリ秒26ミリ秒上の結果を見ても分かる通り、率直にFor文を書いたのが最速の結果になりました。LINQは便利ですが、速度を求められる場合は、For文で書いた方がよさそうです。以下、実際測定する時に使ったソースコードです。For文var s =newStopwatch(); s.Start();int count =10000;int[] ary =newint[count];for(int i =0; i < ary.Length; i++){ ary [i]=10;} s.Stop();Enumerable.Repeatvar s =newStopwatch(); s.Start();int[] ary = Enumerable.Repeat<int>(10,10000).ToArray(); s.Stop();IEnumerator.Selectvar s =newStopwatch(); s.Start();int[] ary =(newint[10000]).Select(n =>10).ToArray(); s.Stop();最後にC#, VB(のサンプルは無いですが…^^)で、配列に任意の値を一括代入する方法を紹介しました。LI…