栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么字典是“无序的”?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么字典是“无序的”?

好吧,一方面,您不清楚这是 插入顺序 还是 键顺序 。例如,如果您编写以下内容,您期望的结果是什么:

var test = new Dictionary<int, string>();test.Add(3, "three");test.Add(2, "two");test.Add(1, "one");test.Add(0, "zero");Console.WriteLine(test.ElementAt(0).Value);

您期望“三”还是“零”?

碰巧的是,只要您从不删除任何内容,我 认为 当前的实现会保留插入顺序-但您 一定不能依赖于此 。这是一个实施细节,将来可能会改变。

删除也会影响这一点。例如,您希望该程序的结果是什么?

using System;using System.Collections.Generic;class Test{     static void Main()     {        var test = new Dictionary<int, string>();        test.Add(3, "three");        test.Add(2, "two");        test.Add(1, "one");        test.Add(0, "zero");        test.Remove(2);        test.Add(5, "five");        foreach (var pair in test)        { Console.WriteLine(pair.Key);        }    }     }

实际上(在我的盒子上)是3、5、1、0。5的新条目使用了2以前使用的腾空条目。不过,也不能保证。

重新哈希(当需要扩展字典的基础存储时)可能会影响事物……各种各样的事情都会发生。

只是不要将其视为有序集合。 它不是为此设计的。即使它现在可以正常工作,您仍将依赖未记录的行为,这违背了类的目的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/576218.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号