如果我有一个具有params
参数的方法,可以通过引用传递它,并在每次调用yield时更新。
这样的事情:
public static void GetRowsIter(ref params valuesToUpdate)
{
foreach(row in rows)
{
foreach(param in valuesToUpdate
{
GetValueForParam(param)
}
yield;
}
}
这合法吗? (我离开了我的编译器,或者我只是尝试一下。)
答案 0 :(得分:6)
没有。 params
只创建一个包含要传递的参数的数组。与所有其他数组一样,此数组只是变量的集合,并且无法声明ref
变量或数组类型。因此,只有实际的显式参数可以作为ref
或out
传递。
话虽如此,如果类型是引用类型,那么它将像往常一样展示引用类型语义,这意味着对对象进行的任何更改都将反映在所有可访问该对象的代码中参考。只有对实际变量的分配才会被反映出来。
但是,我不确定您的代码究竟要做什么。 yield
语句必须后跟return
语句和值或break
语句,后者结束迭代器。