我制作了一个继承自 Dictionary 的自定义 Dictionary 类。但是,根据我使用类的方式调用索引器时会发生奇怪的事情。这是该类的简化版本:
public class MyDictionary<TKey, TValue> : Dictionary<TKey, TValue>
{
public new TValue this[TKey key]
{
get
{
return base[key];
}
set
{
base[key] = value;
}
}
}
现在,我想创建一个实例并向其中添加一些内容。以下工作正常,即我可以在索引器的设置器中设置一个断点,它将被命中。
MyDictionary<int, string> dict = new MyDictionary<int, string>();
dict[0] = "some value";
但是,如果我这样做(实例化为 IDictionary 变量):
IDictionary<int, string> dict = new MyDictionary<int, string>();
dict[0] = "some value";
它不会再在索引器的设置器中命中我的断点,即它必须调用其他东西。如果我看一下 .NET 的 Dictionary 实现(我的类从它继承),除了我覆盖的那个之外,我找不到其他索引器,而且它不会从其他任何东西继承。所以问题是,发生了什么?