C# 为什么使用字典<;TKey,TValue>;。Item()对找不到的键引发异常,而IDictionary.Item()不应该?

C# 为什么使用字典<;TKey,TValue>;。Item()对找不到的键引发异常,而IDictionary.Item()不应该?,c#,dictionary,symbol-table,C#,Dictionary,Symbol Table,我觉得奇怪的是,该方法抛出KeyNotFoundException而不抛出KeyNotFoundException。字典实现了这个接口。那么,为什么会有这样的实现,使I映像打破了接口约定呢 (另外,我想象字典背后的想法的符号类型结构似乎有一个惯例,即该方法不应抛出异常。)IDictionary不是泛型的,例如,哈希表实现了它。因此,HashTable的键及其值都是对象,因此如果找不到键,它可以()返回null。A的值可以是一种值类型,因此它没有“错误”——像null这样的值可以返回。当你说“键是

我觉得奇怪的是,该方法抛出KeyNotFoundException而不抛出KeyNotFoundException。字典实现了这个接口。那么,为什么会有这样的实现,使I映像打破了接口约定呢


(另外,我想象字典背后的想法的符号类型结构似乎有一个惯例,即该方法不应抛出异常。)

IDictionary
不是泛型的,例如,哈希表实现了它。因此,
HashTable
的键及其值都是对象,因此如果找不到键,它可以()返回
null
。A的值可以是一种值类型,因此它没有“错误”——像
null这样的值可以返回。

当你说“键是一个对象”时,你是说“值”吗?因为这是从
返回的内容,而不是键。