C# 特殊的引用类型string

String对象的值是只读的,任何貌似对String对象的值进行写操作的行为,实际上都不是在对原String对象进行写操作,而是在堆上创建了一个新的String对象实例。
字符串是 Unicode 字符的有序集合,用于表示文本。 String 对象是 System.Char 对象的有序集合,用于表示字符串。 String 对象的值是该有序集合的内容,并且该值是不可变的。

String 对象称为不可变的(只读),因为一旦创建了该对象,就不能修改该对象的值。看上去似乎修改了String 对象的方法实际上是返回一个包含修改内容的新String 对象。如果需要修改字符串对象的实际内容,请使用System.Text.StringBuilder 类。


看下面的代码

	void Start () 
	{
		string str1 = "wang";//创建一个string对象"字符串1",其中存储“wang”,并使引用变量str1指向它。
		string str2 = str1;//引用变量str2也指向对象“字符串1”。
		str1 = "yang";//创建一个新的string对象“字符串2”,其中存储“yang”,并使引用变量str1指向它。str1指向“字符串2”,不再指向“字符串1”
		Debug.Log(str2);//str2仍然指向“字符串1”
	}

最终输出字符串“wang”。

另外

function ConcatExample(intArray: int[]) {
	var line = intArray[0].ToString();

	for (i = 1; i < intArray.Length; i++) {
		line += ", " + intArray[i].ToString();
	}

	return line;
}
在这里,每一次循环时,line这个引用变量都会指向一个新的string对象,那么line之前所指向的对象就死掉了(因为没有一个引用变量指向它,我们将没有任何办法使用到它)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值