想要使用多态性编写 C# 代码

  • 本文关键字:代码 多态性 c#
  • 更新时间 :
  • 英文 :


我想重构代码以使用多态性而不是if-else。我可以使用如果..还。但我想在这里使用多态性。

谁能告诉我?

public class Calculator
{
    public int Calculate(int a, int b, Operation operation)
    {
        switch(operation)
        {
            case "add":
                return a+b;
            case "subtract": 
                return a-b;
            case "multiply":
                return a*b;
        default: 
            throw new Exception("Unknown Operation Type");
    }
}
public class Operation
{
    public string Type { get; set; }
}

据我了解,可以使用多态性实现操作的选择,如下所示。首先,为操作定义一个接口。

public interface IOperation
{
    int Operate(int a, int b);
}

接下来,将使用与实际实现相同的接口实现不同的类。

public class Addition : IOperation
{
    public int Operate(int a, int b){ return a + b; }
}
public class Subtraction : IOperation
{
    public int Operate(int a, int b){ return a - b; }
}
public class Multiplication : IOperation
{
    public int Operate(int a, int b){ return a * b; }
}

由于在初始问题中也这样做了,因此实际操作可以通过以下函数执行。

public int Calculate(int a, int b, IOperation iOp)
{
    return iOp.Operate(a, b);
}

我想你要求这样的东西。但由于背景信息有限,这只是猜测。

public int Calculate(int a, int b, Operation operation)
{
  if(operation == "add")
    return Add(a, b);
  if(operation == "sub")
    return Sub(a,b);
  return 0;
}
private int Add(int a, int b) { return a + b; }

最新更新