字典<TKey,TValue> .Values - 它分配新的内存和时间复杂度

Nar*_*yan 3 c# memory dictionary time-complexity

我是C#的新手,我想了解使用Dictionary.Values属性的内存和时间开销是多少.在这里,我找不到算法时间复杂度规范或内存复杂性?我看错了地方还是在C#规范中未定义?

PS我来自C++ bg.

Mar*_*ell 10

在C#规范中未定义吗?

它没有在C#规范中定义,因为它不是C#特性 - 它是一个框架实现细节.

.Values正在懒洋洋地实例化,一旦它被要求在第一时间; 之后,分发现有价值.所以是的,在第一次使用时可能会分配一些内存.但是,它不包含值的快照副本,因此:这不是一个昂贵的分配.它只包含一个返回父字典实例的引用.

private Dictionary<TKey, TValue> dictionary;
Run Code Online (Sandbox Code Playgroud)

是字面上唯一的字段ValueCollection<TKey, TValue>.它本质上是一个外观,提供相同数据的以价值为中心的视图.