【发布时间】:2012-01-15 01:09:42
【问题描述】:
我想做这样的事情:
double a, b, c, d, e;
ParseAndWrite("{1, 2, 3}", ref a, ref b, ref c);
ParseAndWrite("{4, 5}", ref d, ref e);
-> a = 1, b = 2, c = 3, d = 4, e = 5
但是,我不能写这样的函数:
private void ParseAndWrite(string leInput, params ref double[] targets)
{
(...)
}
这不起作用,由于某种原因,不能同时使用 ref 和 params。为什么会这样?
编辑:好的,这里有一些关于我为什么需要这个的更多信息:通过一个接口,我得到了很多包含值的字符串,语法如下:
inputConfig : " step, stepHeight, rStep, rStepHeight, (nIterations, split, smooth) "
outputConfig : " dataSelection, (corrected, units, outlierCount, restoreOriginalRange) "
(括号中的名称是可选的)。这些值需要解析并存储在所有特定变量中。也就是说 - 它们根本不是数组。它们更像是命令行参数,但大约有 20 个。我当然可以按顺序执行所有这些操作,但这会产生数百行包含冗余模式且不易维护的代码。
【问题讨论】:
-
我通过一个接口得到了很多逗号分隔的字符串。它们包含需要填充到大量目标参数中的不同数量的值。为了减少代码冗余,我正在寻找这样的函数。
-
我可以理解这种困境,但返回值序列的标准方法是返回
IEnumerable<T>,这是大多数 BCL 所做的。 -
@Dennis Traub:谢谢。这 IS 是重复的,尽管上下文略有不同。答案又长又复杂,可以在这里找到:stackoverflow.com/questions/1776020/…
-
我总是觉得人们会竭尽全力避免真正做好 OO,这很有趣。