使用通用类型 'System.Collections.Generic.Dictionary<TKey, TValue>' 需要2个类型参数。

7

这行代码出错了:使用通用类型 'System.Collections.Generic.Dictionary< TKey, TValue>' 需要2个类型参数

this._logfileDict = new Dictionary();

我只是试图在我的代码中使用一个清晰的_logfileDict,其中没有任何条目,这就是为什么我正在分配一个新的字典,它将是空的,但如果有人知道我可以使用什么代码来清空 _logfileDict,那就好了。 它只是声明如下的一个字典:

private Dictionary<string, LogFile> _logfileDict;

非常感谢任何帮助!


1
一旦您键入“= new”,IntelliSense应该会指向正确的方向... - jv42
2
答案在错误信息中。 - jrummell
5个回答

16
你之所以会遇到这个错误,是因为你试图使用需要 generic 类型参数的 Dictionary<TKey, TValue> 类。没有不需要泛型类型参数的 Dictionary 类。
当使用一个使用泛型类型参数的类时,你必须在声明或实例化处理该类的变量时提供你想要使用的类型。
替换:
this._logfileDict = new Dictionary();

使用:

this._logfileDict = new Dictionary<string, LogFile>();

这个回答有点短,但是仍然是正确的 :)。 - jv42
1
@jv42 同意,我已经更新了答案,包括更多的信息和参考资料。 - Johannes Kommer
1
哦,好的,这现在是一个真正伟大的答案 :) - jv42

6
在.NET Framework中没有没有带泛型参数的类型为Dictionary。在实例化Dictionary<TKey, TValue>时,必须明确声明类型参数。在您的情况下,_logfileDict被声明为Dictionary<string, LogFile>,因此在分配新实例时必须明确声明它。因此,您需要这样分配一个新实例给_logfileDict:
this._logfileDict = new Dictionary<string, LogFile>();

(请注意,如果您不想指定键和值的类型,.NET框架中有一个名为System.Collections.Hashtable的类可以使用。)

2
您需要指定两种类型:
this._logfileDict = new Dictionary<string, LogFile>();

2

try this ..

 this._logfileDict = new Dictionary<string, LogFile>(); 

值得阅读关于字典及其如何初始化的内容,请点击此链接获取更多有关字典的信息...


1

正如您所知,您的字典构造函数需要键的类型和值的类型,因此这就是您遇到的错误。

由于您的日志文件字典定义具有字符串类型和Logfile类型,因此构造函数肯定是

this._logfileDict = new Dictionary<string, LogFile>(); 

这是一个空的(根据您定义的)字典,但需要此定义进行初始化,以便在向其输入内容时可以进行类型检查

希望这可以帮助到您


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接