将concurrentdictionary传递给另一个方法

时间:2013-11-19 04:07:37

标签: c# concurrentdictionary

我在将ConcurrentDictionary传递给另一个带有out参数的方法时遇到了一些问题。

在主要方法中,

Method1(1,2,dictionary);

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

我得到的错误信息是“使用未分配的参数字典”。我需要在整个代码中保留字典的内容。感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

你认为“out”是什么意思? “out”有点像“ref”。 “ref”和“out”与.NET reference types一起使用。 “ref”表示该方法可以更改变量引用的对象。即改变变量所指向的内存块。 “out”表示预期该方法将定义变量引用的对象。

即。如果没有参数,则必须在方法

中实例化参数实例

e.g

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)
    //  {

答案 1 :(得分:0)

由于dictionaryout参数,因此您必须保证在dictionary完成时分配Method1。如果您不想更改dictionary,则可以将其分配给自己。