我正在重构一些代码。
目前有不少地方有这样的功能:
string error;
if (a) {
error = f1(a, long, parameter, list);
}
else {
error = f2(the_same, long, parameter, list);
}
在重构 f1 和 f2 (它们很大,但做类似的事情)之前,我想重构为:
string error = (a ? f1 : f2)(a, long, parameter, list);
就像在 C 中所做的那样。(函数签名是相同的)
但我收到一个错误:
“错误 13 无法确定条件表达式的类型,因为‘方法组’和‘方法组’之间没有隐式转换”
这将使我认识到参数列表与初始重构相同,给出不变的行为,并且还在单个位置重构调用,确保在这些不同的重构过程中,当我将调用接口更改为方法时,不会有任何问题。
我是否遗漏了一些小东西,可以让接近于此的语法工作(而不是一大堆额外的委托类型定义等)?
抱歉编辑,但实际上有一个返回值,是的,不幸的是,它是一个字符串。 ;-(
现在,我正在解决这个问题:
string error = a ? f1(a, long, parameter, list) : f2(a, long, parameter, list);
问题是参数列表确实很长,并且将被重构,我更愿意首先合并它们,并在更改它们时处理编译器错误。