首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请问一个关于stringbuilder的有关问题

2012-09-24 
请教一个关于stringbuilder的问题今天在随手写Demo的时候发现的,以下是部分代码C# codeclass Program{priv

请教一个关于stringbuilder的问题
今天在随手写Demo的时候发现的,以下是部分代码

C# code
    class Program    {        private static readonly StringBuilder outPutMessage = new StringBuilder();        private static readonly string outPutString = string.Empty;        static void Main()        {//不关心的内容        }        private static void AppendtoMessage(string message)        {            outPutMessage.Append("\n" + message);            outPutString = outPutString + "\n" + message;        }    }


在代码中使用了两个readonly变量,一个是string,一个是StringBuilder 

在编译时,最后一句会报错,readonly的变量只能在构造函数和初始化时赋值,这个是意料之中的。

我的问题是为什么readonly的StringBuilder 却可以被Append?

在Main中调用多次都很正常,最后 tostring()也能生成字符串,这是为什么呢?这里的readonly还有什么意义呢?

谢谢!

[解决办法]
因为readonly的是引用,而不是引用的对象。
如果你在Main这么写,是报错的:
outPutMessage = new StringBuilder();
[解决办法]
C# code
using System;namespace Test{    class Program    {        private readonly static MyString _MyString = new MyString();        static void Main()        {            // 下面这行是错误的            // _MyString = new MyString();            _MyString.Append("1");            _MyString.Append("2");            _MyString.Append("3");            Console.WriteLine(_MyString.Value);            Console.ReadKey();        }    }    class MyString    {        private String _value;        public String Value        {            get { return _value; }        }        public MyString()        {            _value = String.Empty;        }                public void Append(String s)        {            _value = String.Format("{0}{1}", _value, s);        }    }} 

热点排行