我想创建一个显示数组元素的方法,调用第一个方法elementsOfArray
而不是在()
内显示给定数组的元素,它显示数组内的元素方法(在这种情况下没有元素所以它只显示,,,,)但名为elementsOfArray1
的方法工作正常我不知道这两种方法之间有多大区别,为什么我必须声明方法中的另一个数组,而不是仅使用我在()
中声明为参数的那个?
class Program
{
static void elementsOfArray(string[] array)
{
array = new string[array.Length];
int i;
for ( i = 0; i < array.Length - 1; i++)
Console.Write(array[i] + ",");
Console.WriteLine(array[i]);
}
static void elementsOfArray1(string[] array)
{
string[] array1 = new string[array.Length];
int i;
for (i = 0; i < array.Length - 1; i++)
Console.Write(array[i] + ",");
Console.WriteLine(array[i]);
}
static void Main(string[] args)
{
string[] names = { "Robert", "Allen", "Brandon", "Jack", "Erwin" };
elementsOfArray(names);
elementsOfArray1(names);
Console.ReadKey();
}
}
答案 0 :(得分:1)
很清楚!
在第一种方法elementsOfArray
中,您将再次初始化数组:
array = new string[array.Length];
然后你把它弄空了。但在第二个elementsOfArray1
:
string[] array1 = new string[array.Length];
int i;
for (i = 0; i < array.Length - 1; i++)
Console.Write(array[i] + ",");
您正在浏览array
,而不是array1
并且您没有更改array
答案 1 :(得分:0)
那是因为你在第一种方法中重新分配了array
new string[array.Length];
,即total number of array items but not copying array items values
static void elementsOfArray(string[] array)
{
array = new string[array.Length];
int i;
for (i = 0; i < array.Length - 1; i++)
Console.Write(array[i] + ",");
//Console.WriteLine(array[i]);
}
第二种方法string[] array1 = new string[array.Length];
。 array1
还包含5个空字符串的数组
static void elementsOfArray1(string[] array)
{
string[] array1 = new string[array.Length];
int i;
for (i = 0; i < array.Length - 1; i++)
Console.Write(array[i] + ",");
// Console.WriteLine(array[i]);
}
如果您希望两种方法的行为相同。只需替换
for (i = 0; i < array.Length - 1; i++)
Console.Write(array[i] + ",");
带
for (i = 0; i < array.Length - 1; i++)
Console.Write(array1[i] + ",");
您将获得相同的结果,即,,,,,