1. ホーム
  2. c#

[解決済み] C#の配列に単一の値を入力/インスタンス化する方法は?

2022-04-01 20:22:55

質問

C#で値型のインスタンス化された配列には、自動的に 型のデフォルト値 (例: bool は false、int は 0 など)。

配列にデフォルト以外のシード値を自動入力する方法はありますか?作成時、またはその後の組み込みメソッド(Javaの Arrays.fill() )? 例えば、デフォルトでfalseではなくtrueのboolean配列が欲しいとします。 これを行う組み込みの方法はありますか?それとも、forループで配列を繰り返し処理する必要がありますか?

 // Example pseudo-code:
 bool[] abValues = new[1000000];
 Array.Populate(abValues, true);

 // Currently how I'm handling this:
 bool[] abValues = new[1000000];
 for (int i = 0; i < 1000000; i++)
 {
     abValues[i] = true;
 }

配列を繰り返し、それぞれの値をtrueにリセットしなければならないのは、非効率的です。 これを回避する方法はありますか? すべての値を反転させるとか?

この質問をタイプアウトして考えてみたところ、デフォルトの値は単にC#がこれらのオブジェクトのメモリ割り当てを裏で処理する方法の結果であり、おそらくこれを行うことは不可能であると想像しています。 しかし、私はまだ確かに知りたいです!

どのように解決するのですか?

フレームワークの方法は知りませんが、それを行うための簡単なヘルパーを書くことができます。

public static void Populate<T>(this T[] arr, T value ) {
  for ( int i = 0; i < arr.Length;i++ ) {
    arr[i] = value;
  }
}