2016-10-03 46 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

相关问题