为什么这两种方法不一样?

时间:2018-01-14 14:30:29

标签: c# arrays methods

我想创建一个显示数组元素的方法,调用第一个方法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();
    }
}

2 个答案:

答案 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] + ",");

您将获得相同的结果,即,,,,,