c#不可变字符串不断更新

时间:2016-05-11 07:54:44

标签: c# string immutability

我一直在研究不可变字符串,并了解在创建对象后无法更改字符串对象的内容 - 而是每次都创建一个新字符串。

我需要一个不断更新的对象 - 某种类型的“状态”对象,每次定时器线程循环时都会更新。

所以我的问题是我可以将这个对象用于什么?

如果有一大堆字符串需要连接,StringBuilder很好,但它可以有效地用于更改其值而不是附加更多的值。

我可以使用自定义枚举吗?

带有get set访问器的字符串属性的自定义类怎么样,但是字符串属性又是不可变的 - 或者我错了吗?

以下是一些示例代码:

string status = "IDLE";

System.Threading.Timer timer = null;
System.Threading.TimerCallback callback = new System.Threading.TimerCallback(delegate
{
    status = getStatus();

    timer.Change(100, Timeout.Infinite);
});
timer = new System.Threading.Timer(callback, null, 0, Timeout.Infinite);

1 个答案:

答案 0 :(得分:1)

即使字符串是不可变的,你在property / attribute / field中存储的不是字符串本身,而是对字符串的引用。

这意味着您可以随时替换引用。

回答你的问题:你可以完美地使用字符串