2013-11-19 2 views
1

Мне грозит какая-то проблема в передаче ConcurrentDictionary другому методу с параметром out., переводящий concurrentdictionary в другой метод

В главном методе

Method1(1,2,dictionary); 

public override int Method1(int x,int y, out ConcurrentDictionary<string,int> dictionary) 
{ 
    if(dictionary.IsEmpty) 
    { 
    do something 
    } 
} 

Сообщение об ошибке я получил это «использование неназначенного из словаря параметров». И мне нужно сохранить содержание словаря по всем кодам. Цените помощь.

ответ

1

Как вы думаете, что означает «выход»? «выход» немного напоминает «ref». «ref» и «out» работать с .NET reference types. «ref» указывает, что метод может изменить объект, на который ссылается переменная. т. е. изменить, какую часть памяти указывает переменная. «out» указывает, что ожидается, что метод определит, какой объект ссылается на переменную.

т.е. с параметрами, что Вы должны создать экземпляр экземпляр параметра в методе

например

public override int Method1(int x,int y, out ConcurrentDictionary<string,int> dictionary) 
{ 
    dictionary = new ConcurrentDictionary<string,int>(); 
    // It doesn't make sense to check if it is empty here as it will always be empty 
    // if(dictionary.IsEmpty) 
    // { 
+0

«Вывод означает, что параметр возвращается из метода». Нет. Вы должны перефразировать это. –

+1

Это лучше? – Mick

0

Поскольку dictionary является out параметр, вы должны гарантировать, что dictionary присваивается по времени Method1 отделки. Если вы не хотите менять dictionary, вы можете просто назначить его себе.