簡體   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