2016-10-03 8 views
0

のメソッドに多くの引数を渡したいと思いますが、参照番号はですが、引数の数はわかりません。paramsキーワードでrefでオブジェクトを渡すことはできますか?

私はこのような何かを試してみましたが、それは動作していない:Dを:

public void myMethod(ref params object args) 

私はのparams内のポインタを渡すことだと思いますが、それは少しC#で複雑になる:/

可能な回避策は?

EDIT:

私は基本的にこのように、コードの一部をカプセル化したい:

....

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

関連する問題