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

2024-05-07

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

像这样的事情:

public static void GetRowsIter(ref params valuesToUpdate)
{

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

这合法吗? (我远离我的编译器,否则我只想尝试一下。)


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

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

但是,我不确定您的代码到底要做什么。这yield声明后必须跟有return语句和一个值或由break语句,结束迭代器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以使用 params 通过使用yield 的函数通过 ref 传递变量 的相关文章

随机推荐