C# 是否可以使用params关键字按ref传递对象?

C# 是否可以使用params关键字按ref传递对象?,c#,reference,parameter-passing,params,ref,C#,Reference,Parameter Passing,Params,Ref,我想通过ref向方法传递很多参数,但我不知道参数的数量 我尝试过类似的方法,但不起作用:D: public void myMethod(ref params object args) 我会考虑在params中传递指针,但在C#中是否有点复杂:/ 可能的解决办法 编辑: 我想封装一部分代码,基本上如下所示: var collectionA=new List(); var myObject=//对象 Optimizer.Optimize(ref collectionA,ref myObject)

我想通过ref向方法传递很多参数,但我不知道参数的数量

我尝试过类似的方法,但不起作用:D:

public void myMethod(ref params object args)
我会考虑在params中传递指针,但在C#中是否有点复杂:/

可能的解决办法

编辑:

我想封装一部分代码,基本上如下所示:

var collectionA=new List();
var myObject=//对象
Optimizer.Optimize(ref collectionA,ref myObject);//隐藏物
//{
MaClass.Treatment();//使用通过优化器存储在缓存中的collectionA
//集合A在MaClass.Treatment()中修改
...
//}
Optimizer.EndOptimize();
...

目标是,如果调用被封装到我的优化器中,就不能一直请求我的服务器进行相同的处理(HTTPRequest)

不,这是不可能的。但是,通过改变方法中的数组,然后简单地从调用站点的数组中读取值,可以获得大致相同的结果:

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

(这可以简单地推广到一些只在运行时才知道的参数)

您真的需要通过ref传递它们吗?是否尝试在方法中指定新对象?或者它们是您正在为其分配新值的基本类型?。如果两个问题的答案都是“否”,那么你可能不需要经过裁判。太好了!不是我代码的最佳解决方案,但我不知道这个技巧,谢谢@MarcGravel
var args = new[] {x, y, z}
obj.myMethod(args);
x = args[0];
y = args[1];
z = args[2];