c# - 将一个数组的元素复制到另一个数组 - 编译错误

时间:2016-06-29 17:45:36

标签: c# arrays

学习一些基础知识..我试图将数组的元素复制到另一个。我们说我不知道​​阵列的大小' bar'。所以,我创建了一个空数组' arr'将元素复制到bar中。下面的代码不起作用。

如果我替换

,它会起作用
string[] arr ={} to 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]);  


}

5 个答案:

答案 0 :(得分: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]);  
}

答案 1 :(得分:0)

通过string[] arr = {};,您实例化一个零长度的空数组,因此您需要将其定义为string[] arr = string[bar.Length];

<强> UPD: 您的代码使用string[] arr = {"",""},因为在这种情况下,您使用两个空字符串定义了一个长度为2的数组,但这是代码味道。

答案 2 :(得分:0)

阵列的大小是固定的,这就是为什么像列表这样的东西比它们更受欢迎。

如果您将数组定义更改为:string [] arr = {&#34;&#34;,&#34;&#34;}您正在定义一个大小为2的数组,相同作为你原来的阵列。当您尝试复制它时,编译器已经分配了所有内容并准备就绪,因此它知道位置0和位置1在数组arr中的位置。

在代码中的示例中,您拥有由string [] arr = {}定义的数组;你给它一个空数组(数组大小为0)。编译器有一个问题,因为它不能在空数组上引用位置0或位置1。

答案 3 :(得分:0)

您可以将该行修改为:

string[] arr = new string[4];

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

答案 4 :(得分:0)

如果要使用数组,则需要创建与第一个数组大小相同的第二个数组。

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

如果您提前知道阵列将是两个,那么您可以将其创建为大小为2。否则,您将需要检查要复制的阵列的大小。如果您知道要添加和/或删除项目,则需要使用其他集合。