【问题标题】:Can params be used to pass variables by ref via a function using yield参数可以用于通过使用yield的函数通过ref传递变量吗
【发布时间】:2011-03-11 18:01:56
【问题描述】:

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

类似这样的:

public static void GetRowsIter(ref params valuesToUpdate)
{

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

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

【问题讨论】:

    标签: c# yield params


    【解决方案1】:

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

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

    但是,我不确定您的代码的确切用途。 yield 语句必须后跟 return 语句和一个值,或者必须跟在结束迭代器的 break 语句之后。

    【讨论】:

    • 感谢您的信息。我试图编写一种通过 yield 语句返回可变数量值的方法。看起来这是不可能的(至少不是这样)。
    • @Vaccano:你当然可以返回可变数量的值,但它们不能是ref
    猜你喜欢
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 2019-05-18
    • 1970-01-01
    • 2015-03-13
    相关资源
    最近更新 更多