[英]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.