我一直在研究不可变字符串,并了解在创建对象后无法更改字符串对象的内容 - 而是每次都创建一个新字符串。
我需要一个不断更新的对象 - 某种类型的“状态”对象,每次定时器线程循环时都会更新。
所以我的问题是我可以将这个对象用于什么?
如果有一大堆字符串需要连接,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);
答案 0 :(得分:1)
即使字符串是不可变的,你在property / attribute / field中存储的不是字符串本身,而是对字符串的引用。
这意味着您可以随时替换引用。
回答你的问题:你可以完美地使用字符串