2016-10-03 43 views
0

我想通過參考文獻將大量參數傳遞給方法,但我不知道參數的數量。是否有可能通過ref與params關鍵字傳遞對象?

我已經試過這樣的事情,但它不工作:d:

public void myMethod(ref params object args) 

我會想通過在PARAMS指針,但它很少在C#中複雜:/

可能的解決方法嗎?

編輯:

我要封裝的代碼的一部分,基本上是這樣的:

....

var collectionA = new List<string>(); 
var myObject = // an object 
Optimizer.Optimize(ref collectionA, ref myObject); // cache 
//{ 

MaClass.Treatment(); // use collectionA stored in cache via Optimizer 

// the collectionA is modified in MaClass.Treatment() 
... 

//} 
Optimizer.EndOptimize(); 
... 

的目標,不能要求所有的時間我的服務器如果呼叫被封裝到我的優化器中,同樣的處理(HTTPRequest)

+0

你真的*需要通過ref來傳遞它們嗎?你是否試圖在方法中分配新的對象?或者,他們是基本類型,你正在分配新的價值?如果兩個問題的答案都是「否」,那麼你可能不需要通過ref。 –

回答

2

不,這是不可能的。

var args = new[] {x, y, z} 
obj.myMethod(args); 
x = args[0]; 
y = args[1]; 
z = args[2]; 

(可平凡推廣到:但是,您可以通過突變方法中的數組,然後簡單地讀值回了在調用點陣列中獲得相同的只有在運行時才知道的參數數量)

+0

太棒了!並不是我的代碼的最佳解決方案,但我不知道這個技巧,謝謝你@MarcGravell – Adwelean

相關問題