2016-06-29 15 views
1

いくつかの基本を学んでいます。配列の要素を別の配列にコピーしようとしています。配列 'bar'のサイズがわからないとしましょう。そこで、要素をbarにコピーする空の配列 'arr'を作成します。以下のコードは動作しません。c# - ある配列の要素を別の配列にコピーする - コンパイルエラー

私は空の配列を宣言するために、私は私の目標を達成するために私のコードで何を変更する必要がありますどのように

string[] arr ={} to string[] arr ={"",""} 

を交換する場合、それは動作しますか?

ありがとうございます! string[] arr = {};ことで

//code 

string[] bar = {"test", "user"}; 
string[] arr = {}; 



//iterate from the first to the last element of array bar 
for (int i =0;i<bar.Length-1;i++) 

{ 

    Console.WriteLine("copy"); 

    //copy string from bar to arr 
    arr[i]= bar[i]; 

    //display the copied content from new array 
    Console.WriteLine(arr[i]); 


} 

答えて

0

あなたは、このようにあなたがstring[] arr = string[bar.Length];ようにそれを定義する必要があり、長さがゼロの空の配列をインスタンス化しています。

UPD:このケースでは、あなたが2つの空の文字列を使用して長さ2の配列を定義しているため あなたのコードは、string[] arr = {"",""}で働いていたが、それはコードのにおいです。

0

配列はサイズが固定されているため、リストのようなものが優先されます。

配列定義を次のように変更する場合:string [] arr = {""、 ""}オリジナルの配列と同じサイズの配列を定義しています。それをコピーしようとすると、コンパイラにはすでにすべてが割り当てられて準備が整っているので、位置0と位置1が配列arrのどこにあるかが分かります。

あなたのコードの例では、配列がstring [] arr = {};で定義されています。空の配列(配列サイズ0)を与えています。コンパイラには、空の配列の位置0または位置1を参照できないため、問題があります。

2

C#では、配列は固定サイズです。そのため、サイズ0の配列を作成した場合、配列を再インスタンス化せずに、その配列に含まれるアイテムの数を変更することはできません。

あなたは積極的に(非常に一般的であるように)から追加/削除することができ、コレクションを使用したい場合は、List<T>を使用して検討してください。

string[] bar = {"test", "user"}; 
List<string> list = new List<string>(); 

for (int i =0;i<bar.Length-1;i++) 
{ 
    list.Add(bar[i]); 
    Console.WriteLine(list[i]); 
} 
+0

あなたのコレクションがどんなサイズになるのか分かっているのなら、なぜリストが必要なのですか? OPの場合、それはバー配列のサイズです。 – hazevich

+0

テストプログラムのようにすべてが静的であれば、彼はコンパイル時にコレクションのサイズを知っていることを保証することができます。私はC#のジェネリックコレクションをよく知っておくことをお勧めします。なぜなら、それらはずっと頻繁に使用され、より多くの利益をもたらすからです。 – Jonesopolis

+0

@Jonesopolis静的でない場合でも、配列にはサイズを示すLengthプロパティがあります。 – dwbartz

0

あなたは、ラインを変更することができます。

string[] arr = new string[4]; 

または

List<string> arr = new List<string>(); 
0

配列を使用する場合は、2番目の配列をth最初のサイズと同じサイズ。

string[] bar = {"test", "user"}; 
string[] arr = new string[bar.Length]; 

アレイが2つあることが事前に分かっている場合は、サイズ2にすることができます。そうしないと、コピー元の配列のサイズを調べることになります。アイテムを追加または削除することがわかっている場合は、別のコレクションを使用することをお勧めします。

+0

私は他の努力に感謝しますが、私はこれがより直接的であり、同じ問題で考えていると思います。ありがとう! – AKrishna

関連する問題