可以使用params通过使用yield的函数通过ref传递变量

Vac*_*ano 4 c# yield params

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

像这样的东西:

public static void GetRowsIter(ref params valuesToUpdate)
{

    foreach(row in rows)
    {
       foreach(param in valuesToUpdate
       {
          GetValueForParam(param)
       }
       yield;
    }
}
Run Code Online (Sandbox Code Playgroud)

这合法吗?(我离开了我的编译器,或者我只是尝试一下.)

Ada*_*son 6

不,params只是创建一个包含传递参数的数组.与所有其他数组一样,此数组只是变量的集合,并且无法声明ref变量或数组类型.因此,只有实际的显式参数可以作为ref或传递out.

话虽如此,如果类型是引用类型,那么它将像往常一样展示引用类型语义,这意味着对该对象所做的任何更改都将反映在有权访问该引用的所有代码中.仅反映实际变量的分配.

但是,我不确定您的代码到底要做什么.的yield语句或者具有所应遵循的return语句和一个值或由break语句,该语句结束迭代器.