2011-10-28 5 views
1

複数のエンティティを変数として受け入れ、それを配列に変更することは可能です!たとえば、ユーザーは複数の名前を入力しますが、入力する必要のある名前の数は定義されていません。名前を受け取ったときに配列に変更することは可能ですか?C#で配列を使うことに戸惑う

ありがとうございます!

+1

どのようにユーザーが名前に入っていますか? –

+1

「複数のエントリーを変数として受け入れる」とはどういう意味ですか?あなたのデータ入力はダイナミックな入力フィールドを表示する必要があるのですか、あるフィールドの任意の入力を複数の変数に分割したいのですか(カンマで区切るか他のものなど)?結局のところ、結果はリストまたは固定長配列(あなたが持っている要素の数が分かれば作成されます)に格納することができます。 –

+0

@MiguelAngeloたとえば、プロンプトで、アプリには好きな曲の名前を入力するように求められます。 – 0bserver07

答えて

10

.NET配列には固定長があります。リストに要素を動的に追加したい場合は、List<T>クラスを使用できます。例えば

List<string> names = new List<string>(); 

今あなたがリストに要素の追加を開始できます。

names.Add("foo"); 
names.Add("bar"); 
names.Add("baz"); 

をそして、あなたはまた、ToArray()メソッドを使用して、対応する固定長配列を得ることができます:

string[] namesArray = names.ToArray(); 
+2

本当に本当に配列が必要な場合は、ListのToArray()メソッドを使用します。 – Frank

+0

ありがとうダーリン、それは非常に興味深いアプローチです! – 0bserver07

+0

パーティーに遅れていますが、 'ToArray()'は 'List'のメソッドではなく、' List 'が実装する' IEnumerable 'の拡張メソッドです。 –

0

ユーザーが複数の名前を入力する場合は、配列の代わりに文字列のリストを作成します。

+0

私もそれについて考えましたが、この私の教授は、彼がカバーしていないものを使いたいとは思いません!少なくとも彼は他の生徒のスキルについて公平になりたい!再度、感謝します! – 0bserver07

2

あなたが探しているものはparam object []だと思います。未定義の数値や関数のパラメータに使用されます。あなたの関数は次のように行くだろう:

public static void SayHello(params string[] names){ 
    foreach(var name in names){ 
     Console.WriteLine("Hello " + name); 
    } 
} 

そして、あなたはこのようにそれを呼び出すことができます。

SayHello("Bob", "Bill", "Susan"); 
SayHello("Jenny"); 
+0

それはまさに私が意味するものです!ありがとう! – 0bserver07

+0

@ Soap141、よかったら、あなたの答えとしてマークしてください。 – Daryl

関連する問題