c# string的只读特性

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。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值