假设我们要定义一个允许基本算术的类,称为"可添加".可以添加可添加的东西.
abstract class Addable
{
public abstract Addable Add(Addable X, Addable Y)
}
Run Code Online (Sandbox Code Playgroud)
实现Addable的正确方法是什么?以下不起作用,它给出:
Number没有实现继承的抽象成员Addable.Add(Addable,Addable).
class Number : Addable
{
public int Value;
public Number(int Val)
{
Value = Val;
}
public Number Add(Number X, Number Y)
{
return new Number(X.Value + Y.Value);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为问题在于Add将(Number,Number)作为其参数不够通用,但我不知道如何继续.
编辑:有些人要求知道这是用来做什么,让我详细说明.我正在使用一种依赖于获取最多几个对象的算法.根据用例,这些对象是数字或分布.为了保持上面的例子,我将假装我需要添加这些数字或分布.所以我希望代码看起来像:
Addable LongAlgorithm(Addable X, Other parameters)
{
... // Lots of code that may contain X
Z = Add(X,Y)
... // Code Using Z.
return Answer // Answer is of the same type as …Run Code Online (Sandbox Code Playgroud)