繁体   English   中英

C#传递可变数量的引用参数

[英]C# passing a variable number of reference parameters

在C#.NET中,有没有办法将可变数量的对象作为引用对象传递? 例如:

MyMethod (ref param1, ref param2, ref param3)

......具有各种类型的任意数量的参数。

如果您愿意在C#中使用未记录的__arglist__refvalue关键字,则可以。

警告:未记录的功能在将来的C#版本中可能会发生变化。 只有在必要时才使用这些关键字,了解如果Microsoft在下一版本中更改其行为,您的代码可能会停止工作。

例如,以下程序通过引用GetRandomValues方法传递三个int变量。 它输出2,1和4,表明变量已成功修改。

static void Main()
{
    int x = 0, y = 0, z = 0;
    GetRandomValues(__arglist(ref x, ref y, ref z));
    Console.WriteLine(x);
    Console.WriteLine(y);
    Console.WriteLine(z);
}

static void GetRandomValues(__arglist)
{
    Random random = new Random(1);
    ArgIterator iterator = new ArgIterator(__arglist);
    while (iterator.GetRemainingCount() > 0)
    {
        TypedReference r = iterator.GetNextArg();
        __refvalue(r, int) = random.Next(0, 10);
    }
}

不,这是不可能的:可变数量的参数在传递数组之上被实现为“语法糖”; 不可能创建一个pass-by-reference参数数组,因为“by reference by reference”不是一个类型的属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM