using System;
using System.Collections.Generic;
using System.Text;
namespace NET.MST.Fourth.StringAttribute
{
class StringAttribute
{
static void Main(string[] args)
{
String a = "我是字符串";
String b = a;
Console.WriteLine(Object.ReferenceEquals(a, b));
//尝试使用引用b修改a指向的对象,
b = "我是新的字符串";
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(Object.ReferenceEquals(a, b));
Console.Read();
}
}
}
输出结果:
从以上执行结果(通过b没能成功修改a指向的内容)容易误以为string为值类型,而这是由于字符串的只读属性造成的。
由于string的只读特性,所以string对象一旦初始化后就不能再被修改。任何对字符串对象的修改都将强制生成一个新的字符串对象。
在本例中尝试使用引用b来修改a指向的内容是失败的,系统会生成一个新的字符串对象“我是新的字符串”并将其引用赋值给b。