我需要一个像下面这样的数据结构,但我需要能够改变 bool 值。其他两个保持初始化时的状态。你会用什么来获得最佳性能?
Dictionary<string, (object, bool)> dic = new Dictionary<string, (object, bool)>();
我在想哈希表。但是哈希表就像一个带有键/值的字典。我示例中的对象和 bool 在概念上不像键/值,因为外部字典的其他值可以具有相同的对象(或者更好的是......对象类型)。我不想让别人看我的代码后认为对象和 bool 更相关,他们真的是。
提前谢谢你
使用两个具有相同键的并行词典:
Dictionary<string, object> dicObject = new Dictionary<string, object)>();
Dictionary<string, bool> dicBool = new Dictionary<string, bool)>();
这可以防止在 bool 更改时不得不重建元组。
但我需要能够更改 bool 值。
您可以为键重新分配值:
var tuples = new Dictionary<string, (object Obj, bool Bool)>
{
{ "1", (new object(), true) }
};
tuples["1"] = (tuples["1"].Obj, true); // or tuples["1"] = (tuples["1"].Item1, true);
就我个人而言,我会保留它,但对于真正高性能的场景,您可以查看 CollectionMarshall
:
ref var v = ref CollectionsMarshal.GetValueRefOrNullRef(tuples, "1");
if (!Unsafe.IsNullRef(ref v))
{
v.Bool = false;
}
多一点 - 这里.