Использование универсального типа «System.Collections.Generic.Dictionary <TKey, TValue>» требует 2 аргументов типа - PullRequest
5 голосов
/ 16 ноября 2011

Я получаю сообщение об ошибке Использование универсального типа 'System.Collections.Generic.Dictionary ' требует 2 аргументов типа с этой строкой кода:

this._logfileDict = new Dictionary();

Я просто пытаюсь получить четкий _logfileDict без записей в моем коде, поэтому я назначаю ему новый словарь, который будет пустым, но если кто-нибудь знает какой-то код, который я мог бы использовать, чтобы просто очистить _logfileDict, в противном случае.Это просто словарь, объявленный следующим образом:

private Dictionary<string, LogFile> _logfileDict;

Любая помощь очень ценится!

Ответы [ 5 ]

12 голосов
/ 16 ноября 2011

Причина, по которой вы получаете эту ошибку, заключается в том, что вы пытаетесь использовать класс Dictionary<TKey, TValue>, для которого требуются универсальные аргументы типа, и нет класса Dictionary, который не требуют аргументов универсального типа.

При использовании класса, который использует аргументы универсального типа, вам необходимо указывать типы, которые вы хотите использовать всякий раз, когда вы объявляете или создаете экземпляр переменной, связанной с классом.

Заменить:

this._logfileDict = new Dictionary();

С:

this._logfileDict = new Dictionary<string, LogFile>();
6 голосов
/ 16 ноября 2011

В .NET Framework нет типа Dictionary без общих параметров. Вы должны явно указать параметры типа при создании экземпляра и экземпляра Dictionary<TKey, TValue>. В вашем случае _logfileDict объявляется как Dictionary<string, LogFile>, и поэтому вы должны явно указать это при назначении нового экземпляра. Следовательно, вы должны присвоить _logfileDict новый экземпляр следующим образом:

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

(Обратите внимание, что в .NET Framework есть System.Collections.Hashtable, если вы не хотите указывать тип ключей и значений.)

2 голосов
/ 16 ноября 2011

попробуйте это ..

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

Стоит прочитать о словарях и о том, как инициализировать, пожалуйста, перейдите по этой ссылке для получения дополнительной информации о словаре ...

2 голосов
/ 16 ноября 2011

Вам необходимо указать два типа:

this._logfileDict = new Dictionary<string, LogFile>();
1 голос
/ 16 ноября 2011

Ну, как вы знаете, конструктор в вашем словаре требует тип для вашего ключа и тип для вашего значения, так что это ошибка, которую вы получаете.

И так как ваш словарь лог-файла def имеет тип строки и тип лог-файла, то, конечно, конструктор

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

Это пустой (ясный, как вы определили) диктитон, но ему нужно инициализировать это определение, чтобы при вводе данных в него можно было ввести команду check

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...