2011-02-07 28 views
69

可能性の重複:
Populating a list of integers in .NET簡単な方法

よりもC#他に整数のリストを初期化する単純またはよりエレガントな方法はありますこの?

List<int> numberList = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 

または

for(int i = 1; i <= 10; i++) 
{ 
    numberList.Add(i); 
} 

それだけで非常に実用的でいないようだ - リストが多数の値が含まれていた場合は特に。ループはもっと現実的な解決策でしょうか?

おかげで、

CC

+2

「関連」セクションの* FIRST *エントリは、この問題について正確に説明しています。 http://stackoverflow.com/questions/49214/populating-a-list-of-integers-in-net –

+2

これは、2年以上前に*回答された質問にすべて投票していることを意味します*。 –

+0

あなたはリストを宣言した後に()を必要としません。 RichK

答えて

144

すでにC#を使用しているので、あなたがEnumerable.Range()方法の利点を取ることができますが:

var numberList = Enumerable.Range(1, 10).ToList(); 

最初のパラメータはで開始する整数と第二でありますパラメータは、含めるべき連続整数の数です。あなたの初期化リストはendfromからの値の連続したシーケンスと同様に簡単である場合は、あなたの初期化リストは、マッピングによって定義することができ、もう少し複雑な何かがある場合は

+3

Linqは_any_.NET言語、VB.NETに対応しています。 – Oded

+7

私は* so *も 'var'で叩くように誘惑されています; p –

+0

私はLINQがこのようなことをすることさえ知っていませんでした - 私はいつも主にSQL関連のクエリだと思っていました...ありがとう! –

34

、あなただけ

var numbers = Enumerable.Range(from, end - from + 1) 
         .ToList(); 

を言うことができますintからintf、あなたは、例えば

var numbers = Enumerable.Range(from, end - from + 1) 
         .Select(n => f(n)) 
         .ToList(); 

を言うことができます。

var primes = Enumerable.Range(1, 10) 
         .Select(n => Prime(n)) 
         .ToList(); 

Primeint nをとり、n番目の素数を返すFunc<int, int>であると仮定すると、最初の10個の素数を生成します。

+1

真剣に、なぜこれを下落させたのですか? – jason

+1

私は私の票を落としていると思う - 恥ずべき - ここでも+1だよ:) –

+0

@リオンモンスター:そうだね。理解できません。 – jason