C#:数组参数传递问题
数组传递参数的话,如果直接传引⽤过去。对数组参数的操作会改变原始变量的值。如果不想影响原始变量的话,需要在函数⾥⾯定义新的局部数组变量。赋值给局部数组变量,对局部数组变量进⾏操作。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TestYinTong
{
class Program
{
public static void SetArrayA(int[] numbers)
{
for (int n = 0; n < numbers.Length; n++)
{
numbers[n] += 1;
Console.WriteLine("numbers[" + n + "]=" + numbers[n]);
}
}
public static void SetArrayB(int[] numbers)
{
int[] numbersB = {0, 0};
Array.Copy(numbers, numbersB, numbers.Length); //和memcpy中dest、src的位置相反
for (int n = 0; n < numbersB.Length; n++)
{
numbersB[n] += 1;
Console.WriteLine("numbersB[" + n + "]=" + numbersB[n]);
}
}
writeline教程public static void PrintArray(int[] numbers)
{
for (int n = 0; n < numbers.Length; n++)
{
Console.WriteLine("numbers[" + n + "]=" + numbers[n]);
}
}
public static void Main(string[] args)
{
int[] numbers = {3, 4};
Console.WriteLine("调⽤⽅法B之后,输出数组元素:");
SetArrayB(numbers);
Console.WriteLine("调⽤⽅法B之后,原始数组元素:");
PrintArray(numbers);
Console.WriteLine("调⽤⽅法A之后,输出数组元素:");
SetArrayA(numbers);
Console.WriteLine("调⽤⽅法A之后,原始数组元素:");
PrintArray(numbers);
ConsoleKeyInfo i = Console.ReadKey(true);
}
}
}
程序运⾏结果:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。