问题“多值字典”的多个答案建议使用不可变的类,如TValue
Class Dictionary<TKey, TValue>
。
接受的 Jon Skeet 的答案提出了一个Pair
具有只读属性的类和@teedyay 的使用不可变的答案Tuple
。
这种方法的基本原理(或可能的好处)是什么?
和附带问题:如果各自的属性 First 和 Second 无论如何都没有设置器,
为什么要使 TFirst 和 TSecond 只读:
private readonly TFirst first;
private readonly TSecond second;
public TFirst First
{
get { return first; }
}
public TSecond Second
{
get { return second; }
}
更新:
我正在使用带有自定义类的字典来获取其中的值。
并且值正在更新。
我使它们不可变的可能原因(好处)是什么?
我看到这Lookup<TKey, TElement> Class
也是不可变的,并认为我错过了使用 LINQ 查询的一些好处(?)
如果是这样,你能给我举个例子,我错过了什么吗?