Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.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#字典添加顺序错误的条目_C#_Windows Phone 8_Dictionary - Fatal编程技术网

C#字典添加顺序错误的条目

C#字典添加顺序错误的条目,c#,windows-phone-8,dictionary,C#,Windows Phone 8,Dictionary,我在RoutingList中添加了一个新项目,但在第一次删除后,订单是错误的 public Dictionary<int, Route> RoutingList = new Dictionary<int, Route>(); 默认情况下,标准词典的顺序不是保持条目的顺序。如果要保留顺序并保持快速查找,则需要使用 或者,如果您不需要快速查找,或者您的键始终是您的索引(看起来可能是),只需使用列表查看,列表将按顺序排列: List<Route> routes;

我在RoutingList中添加了一个新项目,但在第一次删除后,订单是错误的

public Dictionary<int, Route> RoutingList = new Dictionary<int, Route>();

默认情况下,标准词典的顺序不是保持条目的顺序。如果要保留顺序并保持快速查找,则需要使用

或者,如果您不需要快速查找,或者您的键始终是您的索引(看起来可能是),只需使用列表查看,列表将按顺序排列:

List<Route> routes;
Route route = routes[key];
列出路由;
路线=路线[钥匙];

默认情况下,标准词典的顺序不是保持条目的顺序。如果要保留顺序并保持快速查找,则需要使用

或者,如果您不需要快速查找,或者您的键始终是您的索引(看起来可能是),只需使用列表查看,列表将按顺序排列:

List<Route> routes;
Route route = routes[key];
列出路由;
路线=路线[钥匙];

你不能依赖字典中项目的顺序。如果您需要删除具有最低id的条目,OrderedDictionary的替代方案是更改您的查询(我不是100%确定这会编译,因为我现在没有可用的VS,但您知道了):


你不能依赖字典中项目的顺序。如果您需要删除具有最低id的条目,OrderedDictionary的替代方案是更改您的查询(我不是100%确定这会编译,因为我现在没有可用的VS,但您知道了):

根据:

字典的容量是字典可以容纳的元素数。当元素添加到字典中时,通过重新分配内部数组,容量会根据需要自动增加

这听起来像是ArrayList的行为,其中不维护顺序。从字典中删除项时,内部数组的大小不会减小。因此,索引在您删除的项目处保持打开状态,直到下一个项目被添加到该空索引中。

根据:

字典的容量是字典可以容纳的元素数。当元素添加到字典中时,通过重新分配内部数组,容量会根据需要自动增加


这听起来像是ArrayList的行为,其中不维护顺序。从字典中删除项时,内部数组的大小不会减小。因此,索引在您删除的项目处保持打开状态,直到下一个项目被添加到该空索引中。

如何删除?按键?是的,按具有此行的键:RoutingList.Remove(RoutingList.First().key);如何删除?按键?是的,按具有此行的键:RoutingList.Remove(RoutingList.First().key);很抱歉无法使用OrderedDictionary,因为它在Windows Phone 8框架中不可用。但是,我认为没有字典钥匙是个好主意。我不需要密钥。@6EQUJ5HD209458b:很高兴它有帮助-我不完全了解W8 phone框架-是否有您使用的名称空间/类的MSDN站点?通常的.NET Framework one似乎没有电话过滤器。对不起。无法使用OrderedDictionary,因为它在Windows Phone 8框架中不可用。但是,我认为没有字典钥匙是个好主意。我不需要密钥。@6EQUJ5HD209458b:很高兴它有帮助-我不完全了解W8 phone框架-是否有您使用的名称空间/类的MSDN站点?通常的.NETFrameworkOne似乎没有电话过滤器。
if (RoutingList.Count == 5)
{
    RoutingList.Remove(RoutingList.Keys.Min());
}