Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 转换词典的最快方法<;K、 V>;列出<;V>;_C#_Performance_List_Dictionary - Fatal编程技术网

C# 转换词典的最快方法<;K、 V>;列出<;V>;

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

在c#中,将大约100个条目的字典转换为列表的最快方法是什么?我目前正在使用

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
期间发生的分配有什么好处;既然你还在调用同一个操作。。。