C#数组简单问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 08:26:50
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication167
{
class Program
{
static void Main(string[] args)
{
int[] a1 = new int[] { 1, 2 };
int[] a2 = a1;
a2[1] = 5;
Console.WriteLine("{0} {1}", a1[0],a1[1]);
Console.WriteLine("{0} {1}", a2[0], a2[1]);
Console.ReadLine();
}
}
}
-----------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication168
{
class Program
{
static void Main(string[] args)
{
int a = 10;
int b = a;
a = 5;
Console.WriteLine(a);
Console.WriteLine(b);

因为C#中的数组是按引用传递的, int[] a2 = a1; 这一句中,并不是把a1中的值赋给a2,而是把a1中的值在内存中的地址赋值给a2,两个变量指向的是同一片内存区域,无论哪一个变量更改了值,这两个变量的值就都更改了 所以,这样输出没什么问题。

C#中所有类型,除了数组,其余的都是按值传递。

int[] a2=a1是指针的赋值, 使 a2指向a1地址
a1,a2是同一个数组的两个名字,而不是相同内容的两个数组
所以改哪一个都是一样的.

而b=a是数值的赋值,a,b是两个数,只不过大小相等罢了

前面是引用类型,实际上a1,a2都指向同一地址