虽然我们把byte数组传递给了方法ChangeData去处理了,但是处理完a,b的数据实现了交换,因为数组是引用类型,所以上例中aaa和a都是指向的同一段地址,所以一个aaa改变后,a数组的值对应的有改变了。
值类型举例:
static void Main(string[] args)
{
//byte[] a = new byte[] { 1, 2, 3, 4, 5 };
//byte[] b = new byte[] { 6, 7, 8, 9, 10 };
//ChangeData(a, b);
//Console.Write($"a数组的值:");
//for (int i=0;i< a.Count();i++)
//{
// Console.Write($"{a[i]} ");
//}
//Console.WriteLine("\n ***********");
//Console.Write($"b数组的值:");
//for (int i = 0; i < b.Count(); i++)
//{
// Console.Write($"{b[i]} ");
//}
int a = 5;
int b = 8;
ChangeValue(a,b);
Console.WriteLine($"a的值:{a}");
Console.WriteLine($"b的值:{b}");
Console.ReadKey();
}
//private static void ChangeData(byte[] aaa, byte[] bbb)
//{
// int tempa = aaa.Count();
// int tempb = bbb.Count();
// int count = tempa > tempb ? tempb : tempa;
// byte temp = 0;
// for (int i = 0; i < count; i++)
// {
// temp = aaa[i];
// aaa[i] = bbb[i];
// bbb[i] = temp;
// }
//}
private static void ChangeValue(int aaa, int bbb)
{
int temp = aaa;
aaa = bbb;
bbb = temp;
}
运行结果:
我们看值交换后aaa和bbb值变化了,原始的a和b的值并没有变化。
“在看”和转发是对我最大的支持!