我想有一個映射功能,這是否:混合ref和params關鍵字是不可能的?
public static void Map<T>(IEnumerable<T> src, params T[] dst)
{
for (int i = 0; i < dst.Length; i++)
dst[i] = src.ElementAt(i);
}
爲了使這項工作DST也必須被宣佈爲參考,這似乎並不可能。
這是一個虛數單位測試使用:
int a = 0, b = 0, c = 0;
int[] arr = { 1, 2, 3 };
Tools.Map(arr, a, b, c);
Assert.AreEqual(a, 1);
Assert.AreEqual(b, 2);
Assert.AreEqual(c, 3);
這是可能的呢?它已經存在嗎?這會是一個壞主意嗎?
編輯:換句話說,我怎麼給這個實現的參數的任意數目:
public static void Map3<T>(IEnumerable<T> src, ref T a, ref T b, ref T c)
{
a = src.ElementAt(0);
b = src.ElementAt(1);
c = src.ElementAt(2);
}
是的,這裏有很多不好的東西,甚至在你的不好主意之前; p對於初學者,你正在複製現有的功能。 ('Enumerable.ToArray()')。 – leppie
否。轉換不是從IEnumerable轉換爲數組,而是從IEnumerable轉換爲任意數量的單獨變量。 – ndn
無法看到如何將數組作爲'ref'會產生任何影響。您不是在函數中爲實際數組分配新值。 – Magnus