读书人

C#数组做参数有关问题

发布时间: 2013-09-27 14:23:42 作者: rapoo

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指向另一个对象,然后你的修改都是针对那个数组的了。

读书人网 >C#

热点推荐