Solve 方法确实有一个返回值,但不需要,因为结果也可以在 Solution 属性中使用。
这是我认为的传统代码:
var sqrt2 = Math.Sqrt(2)
这将是与链接中的求解器具有相同精神的替代方案:
var sqrtCalculator = new SqrtCalculator();
sqrtCalculator.Parameter = 2;
sqrtCalculator.Run();
var sqrt2 = sqrtCalculator.Result;
除了第二个版本有点“非传统”之外,还有什么优点和缺点?
是的,编译器不会帮助忘记分配某些属性(参数)的用户,但是所有包含可写属性并且在构造函数中没有强制值的组件都是这种情况。
是的,线程不起作用,但是每个线程都可以创建自己的求解器。
是的,垃圾收集器将无法处理求解器的结果,但是如果整个求解器都被处理掉了,它就会处理掉。
是的,编译器和处理器对参数和返回值进行了特殊处理,这使得它们速度很快,但是参数处理的时间几乎可以忽略不计。
等等。其他想法?