【发布时间】:2014-03-19 12:28:29
【问题描述】:
是否存在任何 C# 类型/结构可以使变量变成常量? 也许通过设置一个固定值的标志。
示例代码:
foreach (Person p in group)
{
if (p.Mood.Equals("bad"))
{
group.Mood = "bad";
group.Mood.Fix(); // This should disable any further changing on group.Mood
}
else
{
group.Mood = "good";
}
}
如果一个人心情不好,整个团队的心情都应该是“坏”的。 我知道我可以自己实现这样的东西,但我经常使用它,我可以想象这样的结构已经存在。
希望大家心情愉快! ;)
【问题讨论】:
-
没有为此内置任何东西。这种模式有时被称为“冰棒”或“冰棒不变性”(即你在某个时候冻结它)。另外,我建议不要拥有一个您可以设置但忽略新值的属性,如果一个人心情不好,而下一个人心情好,就会发生这种情况。我会在那个时候跳出循环并忽略整个 const/immutability 问题。
-
谢谢,还有个问题:为什么叫“冰棒”?
-
好吧,这是因为它在“使用”之前首先是液体并且大部分是冷冻的? ;)
-
没错,它有液态(可变)状态和冻结(不可变)状态。