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

时间:2011-11-16 14:40:05

标签: c# dictionary

我收到错误使用泛型类型'System.Collections.Generic.Dictionary< TKey,TValue>'这行代码需要2个类型参数

this._logfileDict = new Dictionary();

我只是想在我的代码中创建一个没有条目的清晰的_logfileDict,这就是为什么我为它分配一个新的Dictionary,它将是空的,但是如果有人知道我可以使用的一些代码只是为空否则_logfileDict。它只是一个字典声明如下:

private Dictionary<string, LogFile> _logfileDict;

非常感谢任何帮助!

5 个答案:

答案 0 :(得分:12)

您收到此错误的原因是您尝试使用需要Dictionary<TKey, TValue>类型参数的generic类,并且没有Dictionary类不需要泛型类型参数。

当使用使用泛型类型参数的类时,只要声明或实例化处理类的变量,就需要提供要使用的类型。

替换:

this._logfileDict = new Dictionary();

使用:

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

答案 1 :(得分:6)

.NET Framework中没有没有通用参数的类型Dictionary。您必须在实例化时明确声明类型参数和Dictionary<TKey, TValue>的实例。在您的情况下,_logfileDict被声明为Dictionary<string, LogFile>,因此您必须在分配新实例时明确说明这一点。因此,您必须为_logfileDict分配一个新实例:

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

(但是,请注意,如果您不想指定键和值的类型,.NET Framework中有System.Collections.Hashtable。)

答案 2 :(得分:2)

您需要指定两种类型:

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

答案 3 :(得分:2)

试试这个..

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

值得阅读关于词典和如何初始化,请go through this link了解有关词典的更多信息......

答案 4 :(得分:1)

你知道你的词典中的构造函数需要你的键的类型和你的值的类型,这就是你得到的错误。

因为您的日志文件字典def具有字符串类型和Logfile类型,所以构造函数肯定是

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

这是一个空的(如你所定义的那样清晰)dicitonary但它需要这个定义才能初始化,所以当你输入东西时,它可以输入检查

希望这有帮助

相关问题