【问题标题】:Is it possible to pass objects by ref with the params keyword?是否可以使用 params 关键字通过 ref 传递对象?
【发布时间】:2017-02-11 03:05:53
【问题描述】:

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

我尝试过类似的方法,但它不起作用: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)

【问题讨论】:

  • 真的需要通过 ref 传递它们吗?您是否尝试在方法中分配新对象?或者它们是您要为其分配新值的原始类型?如果这两个问题的答案都是“否”,那么您可能不需要通过 ref。

标签: c# reference parameter-passing params ref


【解决方案1】:

不,这是不可能的。但是,您可以通过在方法中改变数组来获得很多相同的结果,然后只需在调用站点从数组中读取值即可:

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

(可以简单地概括为许多仅在运行时才知道的参数)

【讨论】:

  • 太棒了!不是我的代码的最佳解决方案,但我不知道那个技巧,谢谢@MarcGravell
猜你喜欢
  • 1970-01-01
  • 2015-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-31
  • 1970-01-01
  • 2012-05-03
相关资源
最近更新 更多