我在将ConcurrentDictionary传递给另一个带有out参数的方法时遇到了一些问题。
在主要方法中,
Method1(1,2,dictionary);
public override int Method1(int x,int y, out ConcurrentDictionary<string,int> dictionary)
{
if(dictionary.IsEmpty)
{
do something
}
}
我得到的错误信息是“使用未分配的参数字典”。我需要在整个代码中保留字典的内容。感谢您的帮助。
答案 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)
由于dictionary
是out
参数,因此您必须保证在dictionary
完成时分配Method1
。如果您不想更改dictionary
,则可以将其分配给自己。