gpt4 book ai didi

c# - C# 字典只存储对象的引用还是作为键添加的对象的完整副本?

转载 作者:行者123 更新时间:2023-11-30 19:14:46 24 4
gpt4 key购买 nike

我想使用一个类作为字典的键。但是该类在内存消耗方面很大。所以,我想知道当我们将一个对象添加为字典的键时,它是只添加它的引用还是添加完整的副本。因为,如果添加了对象的完整副本,那么我可以只使用对象的哈希码。

最佳答案

字典存储传入的任何值 - 条目的键和值都是如此。对于引用类型,该值是一个引用——不涉及复制引用引用的对象的克隆。这是一个例子:

var dictionary = new Dictionary<int, StringBuilder>();
var builder = new StringBuilder("x");
dictionary.Add(5, builder);

// Retrieve the reference from the dictionary and append to it
dictionary[5].Append("y");

Console.WriteLine(builder); // Prints xy

这显示了事物的值(value) 面。 key 以相同的方式存储 - 作为引用 - 但这里有一个警告......如果你改变 key 所指的对象,那在大多数情况下会从根本上破坏字典,因为 key 的哈希码在添加条目时计算。通常,您使用不可变类型(如 string)作为字典的键。

关于c# - C# 字典只存储对象的引用还是作为键添加的对象的完整副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55531617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com