C# 转换词典的最快方法<;K、 V>;列出<;V>;
在c#中,将大约100个条目的字典转换为列表的最快方法是什么?我目前正在使用C# 转换词典的最快方法<;K、 V>;列出<;V>;,c#,performance,list,dictionary,C#,Performance,List,Dictionary,在c#中,将大约100个条目的字典转换为列表的最快方法是什么?我目前正在使用 myDictionary.Values.ToList(); 但是当我查看Values属性的源代码时,它似乎创建了字典的副本,这似乎很慢。我不需要复印件,有没有最快的办法 [__DynamicallyInvokable] public Dictionary<TKey, TValue>.ValueCollection Values { [__DynamicallyInvokable
myDictionary.Values.ToList();
但是当我查看Values属性的源代码时,它似乎创建了字典的副本,这似乎很慢。我不需要复印件,有没有最快的办法
[__DynamicallyInvokable]
public Dictionary<TKey, TValue>.ValueCollection Values
{
[__DynamicallyInvokable] get
{
if (this.values == null)
this.values = new Dictionary<TKey, TValue>.ValueCollection(this);
return this.values;
}
}
[[uuu\u DynamicallyInvokable]
public Dictionary.ValueCollection值
{
[[uu\u dynamiccallyinvokable]获取
{
if(this.values==null)
this.values=新字典.ValueCollection(this);
返回这个值;
}
}
我认为这有助于:
var list= new List<V>(myDictionary.Values);
var list=新列表(myDictionary.Values);
我认为这有助于:
var list= new List<V>(myDictionary.Values);
var list=新列表(myDictionary.Values);
它不创建字典的副本,它只创建嵌套在字典中的类的实例。作为输入,使用字典读取其值。如前所述,这是一个O(1)操作
可枚举。ToList
将根据这些值创建一个新列表。在我看来,这种方法是有效和可读的。通过使用ToList
可以将字典本身的值解耦,这似乎是需要的 它不创建字典的副本,只创建嵌套在字典
中的类的实例。作为输入,使用字典读取其值。如前所述,这是一个O(1)操作
可枚举。ToList
将根据这些值创建一个新列表。在我看来,这种方法是有效和可读的。通过使用ToList
可以将字典本身的值解耦,这似乎是需要的 如果您只有100项,那么性能真的是一个问题吗?与其猜测它“似乎很慢”,您是否执行了任何基准测试来将实际性能与您的需求进行比较?您如何使用希望得到的列表?也许另一种类型对你来说是最佳选择,比如IEnumerable
或ICollection
。如果你只有100项,那么性能真的是一个问题吗?与其猜测它“似乎很慢”,你有没有执行过任何基准测试来比较实际性能和需求?你如何使用你想要得到的列表?也许另一种类型对您来说是最佳选择,比如IEnumerable
或ICollection
。我不认为这比var list=myDictionary.Values.ToList()
更好。更具体地说,OP担心在myDictionary.Values
期间发生的分配;因此,由于您仍在调用相同的操作…我不认为这比var list=myDictionary.Values.ToList()
更具体地说,OP担心在myDictionary.Values
期间发生的分配有什么好处;既然你还在调用同一个操作。。。