c# 中为什么说BigInteger是不可变的呢?

 BigInteger a = BigInteger.Parse("13454546656444999999999999999999999999999999999999999999999999999999");
         a = BigInteger.Add(a,a);
                    这样不就改变了a的值吗?

因为内部实现上,大概类似
BigInteger Add(a)
{
return new BigInteger(当前值+a);
}
而不是
BigInteger Add(a)
{
当前值+a;
return this;
}
因此一个BigInteger建立起来,这个对象的状态就不会变了。

你的意思是 返回的是一个a的副本吗 就像传进去的是值类型而不是引用类型? 那使用 的时候要注意什么呢?

String类型每进行一次操作就会new一个新对象。String a ="name"是这样子的:new一个对象,内容是“name”,放在地址A1处,让变量a指向这个A1地址。a = "age":new一个新对象,内容是“age”,放在一个新地址A2,让变量a指向A2。结果打印出来的自然是“age”了。这个时候地址A1处的内容还是“name”,没有变(String为不可变字符串是指这个意思)。另外,这个时候地址A1处的对象(“name”)由于没有变量指向它(变量a已经指向A2),永远无法访问了所以变成了垃圾,等待系统回收。 应该是一个道理。