Hiding/Overriding 基本 class 方法,在 C# 中带有参数

Hiding/Overriding base class method with params in C#

我有一个抽象 class,它有一个带有 params 参数的方法,如下所示。我想用一个方法覆盖和隐藏这个方法,该方法在继承 class.

时采用一定数量的参数而不是参数
public abstract class BaseClass{
    public List<int> list = new List<int>();
    public void Add(params int[] numbers){
        list.AddRange(numbers);
    }
}

public class ChildClass : BaseClass{
    public override void Add(int a, int b, int c){
        base.Add(a, b, c);
    }
}

这有效,但是基础 class 的添加功能仍然对外部可见,子 class 中的添加功能似乎没有覆盖它。有办法吗?

I want to override and hide this method with a method which takes certain number of parameters instead of params in inheriting class.

你不能。那会破坏继承。考虑以下代码:

BaseClass bc = new ChildClass();
bc.Add(0, 1);

需要编译 - 那么您希望它做什么?如果您期望使用 3 个参数的方法 replace 原始方法,那么大概您不希望编译它 - 但 bc 的编译时类型只是BaseClass,不是 ChildClass

您可以 重载 BaseClass.Add(您不需要 new 因为它没有与基本 class 方法相同的签名),但您不能用更严格的形式替换它。