web-dev-qa-db-ja.com

C#リストの自動初期化

新しいC#リスト(List<double>)。リストをループする以外に、すべての開始値を0に初期化する方法はありますか?

47
JasCav

Enumerableクラスの静的メソッドを使用して)提供される機能的なソリューションに加えて、コンストラクターでdoublesの配列を渡すことができます。

var tenDoubles = new List<double>(new double[10]);

これは、doubleのデフォルト値がすでに0であり、おそらくわずかにパフォーマンスが向上するために機能します。

57
Michael Meadows

初期化子を使用できます:

var listInt = new List<int> {4, 5, 6, 7};
var listString = new List<string> {"string1", "hello", "world"};
var listCustomObjects = new List<Animal> {new Cat(), new Dog(), new Horse()};

したがって、これを使用できます:

var listInt = new List<double> {0.0, 0.0, 0.0, 0.0};

それ以外の場合、デフォルトのコンストラクタを使用すると、リストは空になります。

このコードを使用してください:

Enumerable.Repeat(0d, 25).ToList();
new List<double>(new double[25]);     //Array elements default to 0
37
SLaks

可能性の1つは、 Enumerable.Range

int capacity;
var list = Enumerable.Range(0, capacity).Select(i => 0d).ToList();

もう一つは:

int capacity;
var list = new List<double>(new double[capacity]);
18
jason

少し遅れていますが、まだ興味があるかもしれません:LINQを使用して、

var initializedList = new double[10].ToList()

...できればリストのコピーを避けてください(現在はLINQに任されています)。

これはマイケル・メドウズの答えに対するコメントであるべきですが、私は評判に欠けています。

2
Daniel