首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#数组做参数有关问题

2013-09-27 
C#数组做参数问题using Systemusing System.Collections.Genericusing System.Linqusing System.Textn

C#数组做参数问题
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace test
{
    class ArrayClass
    {
        static void PrintArray(string[] arr)
        {
            for (int i = 0; i < arr.Length; i++)
            {
                System.Console.Write(arr[i] + "{0}", i < arr.Length - 1 ? " " : "");
            }
            System.Console.WriteLine();
        }

        static void ChangeArray( string[] arr)
        {
            arr = (arr.Reverse()).ToArray();
            PrintArray(arr); 
            System.Console.WriteLine("arr[0] is {0} in ChangeArray.", arr[0]);
           // return arr;
        }

        static void ChangeArrayElements(string[] arr)
        {
            arr[0] = "Sat";
            arr[1] = "Fri";
            arr[2] = "Thu";
            System.Console.WriteLine("arr[0] is {0} in ChangeArrayElements.", arr[0]);
        }

        static void Main()
        {
            // Declare and initialize an array.
            string[] weekDays = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };


            PrintArray(weekDays);

            ChangeArray(weekDays);
            System.Console.WriteLine("Array weekDays after the call to ChangeArray:");
            PrintArray(weekDays); 
            System.Console.WriteLine();

            ChangeArrayElements(weekDays);
            System.Console.WriteLine("Array weekDays after the call to ChangeArrayElements:");
            PrintArray(weekDays);
        }
    }
}
问题是红色的代码都改变了arr的值,那为什么返回后weekDays前面没改变,后面改变了呢?
结果是这样的C#数组做参数有关问题 c#
[解决办法]
不加ref,你用ToArray()让arr指向另一个对象,然后你的修改都是针对那个数组的了。

热点排行