4

如果我有一个有params参数的方法,它是否可以通过引用传递并在每次调用 yield 时更新。

像这样的东西:

public static void GetRowsIter(ref params valuesToUpdate)
{

    foreach(row in rows)
    {
       foreach(param in valuesToUpdate
       {
          GetValueForParam(param)
       }
       yield;
    }
}

那合法吗?(我远离我的编译器,或者我会尝试一下。)

4

1 回答 1

6

params,只是创建一个包含正在传递的参数的数组。这个数组和其他数组一样,只是变量的集合,不可能声明ref变量或数组类型。因此,只有实际的显式参数才能作为ref或传递out

话虽如此,如果该类型是引用类型,那么它将像往常一样表现出引用类型语义,这意味着对对象所做的任何更改都将反映在有权访问该引用的所有代码中。只有对实际变量的赋值不会被反映。

但是,我不确定您的代码打算做什么。yield语句要么必须跟在return语句和值之后,要么必须跟在结束迭代器的语句break之后。

于 2010-07-05T01:58:59.413 回答