- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好的 - 所以我知道构建一个提供功能的工厂方法很简单;但鉴于 Dictionary<TKey, TValue>
是 IEnumerable<KeyValuePair<TKey, TValue>>
,它不应该有一个等价于例如List<T>
的Ctor吗?的ctor(IEnumerable<T> range)
?
考虑到它提供了一个采用 IDictionary<TKey, TValue>
的 Ctor,这就更加愚蠢了。作为来源,但由于该接口(interface)也是IEnumerable<KeyValuePair<TKey, TValue>>
,IEnumerable 选项肯定会更有意义;除非 IEnumerable<>
当类第一次设计时,界面并不存在。
更糟糕的是,如果您查看 ctor 的 IDictionary 版本的实现 - 输入字典是使用以下代码导入的:
foreach (KeyValuePair<TKey, TValue> pair in dictionary)
{
this.Add(pair.Key, pair.Value);
}
[TestMethod]
[ExpectedException(typeof(ArgumentException))]
public void How_To_Break_The_IDictionary_Ctor_Design_Decision()
{
Dictionary<string, string> dictionary = new Dictionary<string, string>();
dictionary.Add("hello", "world");
dictionary.Add("Hello", "world");
Dictionary<string, string> dictionary2 =
new Dictionary<string, string>(dictionary,
StringComparer.CurrentCultureIgnoreCase);
}
ArgumentException
,在构建新的。
最佳答案
共 非官方猜测 :
如果构造函数允许 IEnumerable<KeyValuePair<TKey, TValue>>
您将能够使用相同的 key 提供多个项目,那么预期的行为是什么?
例如。你可以做这样的事情:
var kvps = new[]
{
new KeyValuePair<int, string>(1, "Foo"),
new KeyValuePair<int, string>(1, "Bar"),
new KeyValuePair<int, string>(1, "Baz")
}
var dic = new Dictionary<int, string>(kvps);
关于.net - 为什么 Dictionary<TKey, TValue> 没有 IEnumerable<KeyValuePair<TKey, TValue>> ctor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2252823/
我有一个 Enumerable> .我想创建一个 bool TryGetValue(TKey, out TValue)它的扩展方法就像它在 Dictionary 中可用一样. 我试过了 public
我已经在谷歌上搜索了 Range 参数的作用的解释,但一无所获,所以我相信你会解释使用 It.IsInRange(TValue from, TValue to, Range rangeKind) 时设
//ModelFor(person =>person.Name); public void ModelFor( Expression> expression) { //Result s
作为MSDN says ConcurrentDictionary Class 表示一个线程安全的键值对集合,可以被多个线程同时访问。 但据我所知,System.Collections.Concurre
我有以下字典: IDictionary> myDictionary 我想将字典中的所有值作为 IList 获取.... 只是为了添加一些关于我是如何陷入这种情况的背景...... 我有一个方法可以获取
这似乎是这个 question 的副本,它会问“SortedList 和 SortedDictionary 有什么区别?”不幸的是,答案只是引用了 MSDN 文档(其中明确指出两者之间存在性能和内存使
我正在尝试创建自定义 ReadOnlyDictionary对于.NET 4.0。方法是保持私有(private) Dictionary对象以及标志以确定是否允许添加/删除和项目分配。 这很好用,但我想
我想这并不重要,我只是好奇。 如果字典和查找之间的区别是一个是一对一的,另一个是一对多的,那么不会通过另一个更具体/派生的版本来字典吗? 查找是键/值对的集合,其中键可以重复。字典是键/值对的集合,其
我想在给定 Dictionary 的情况下获取 TKey 和 TValue 的类型类型。 例如。如果类型是 Dictionary我想知道如何获得keyType = typeof(Int32) 和val
我想在给定 Dictionary 的情况下获取 TKey 和 TValue 的类型类型。 例如。如果类型是 Dictionary我想知道如何获得keyType = typeof(Int32) 和val
好的 - 所以我知道构建一个提供功能的工厂方法很简单;但鉴于 Dictionary是 IEnumerable> ,它不应该有一个等价于例如List 的Ctor吗?的ctor(IEnumerable r
我有一个返回 IDictionary > 的函数. 我有另一个函数需要 IDictionary > . 我需要将第一个函数的返回传递给第二个函数。 编译器不想将第一个隐式转换为第二个。那么如何在 O(
我有一个字典如下: public enum Role { Role1, Role2, Role3, } public enum Action { Action1, Action2, Action3,
我认为转换 IDictionary> 相当简单反对 IDictionary> , 但是 var val = (IDictionary>)Value; 抛出 System.InvalidCastExce
我正在努力处理一段简单的代码,即使它很简单,我也找不到解决方案。在一部分上,我有一个名为这样的事件 OnReadMessageParameter(Self, aName, aTypeInfo, poi
我知道当我转换数据类型时,Variants 的速度很慢,即使我只是简单地添加两个保存整数的变体值。我还发现了另一个类似的东西,看起来像变体,称为 TValue。 他们有什么区别? 我正在考虑使用 TS
我在调试时无法检查 TValue 变量的字符串值。悬停菜单不显示字符串值,甚至将其添加到监视列表似乎也很棘手。 给定一个非常基本的示例控制台应用程序,例如 program Project1; uses
我是 C# 的新手,有 Ruby 背景。我还有很多东西要学,这就是为什么我要问以下问题: 目标:1)我想创建一个以字符串为键和我想要的任何对象类型作为值的字典。像这样: Dictionary 2) 但
我需要使用 RTTI 遍历一个具有复杂结构的类。该类有几个我也想迭代的记录成员。 TRTTIHelpers = class public class function DoGetValu
我遇到了一个奇怪的问题,涉及重命名 TValue 数组类型,例如; TValueArray1 := TArray ; TValueArray2 := Array of TValue; 我的意思是说他们
我是一名优秀的程序员,十分优秀!