111,120
社区成员
发帖
与我相关
我的任务
分享
public class AAAAA
{
public int AAA { get; set; }
}
class Program
{
static void Main(string[] args)
{
AAAAA a = new AAAAA();
a.AAA = 111;
List<AAAAA> list = new List<AAAAA>();
for (int i = 0; i < 10; i++)
{
list.Add(a);
}
a.AAA = 222;
for (int i = 0; i < 10; i++)
{
Console.WriteLine(list[i].AAA);
}
Console.ReadKey();
}
}

看下这内部实现就知道,根据T的类型来决定的,如果是传人的值类型,当然就是传值,引用类型就是传递的地址,但是string是一个特殊的情况,它是引用类型,但是传递后给方法后是一个新的string,在方法内部改变后,它之前的值却是不受影响的,这就会造成值类型的一个假象。