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 方法相同的签名),但您不能用更严格的形式替换它。
我有一个抽象 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 方法相同的签名),但您不能用更严格的形式替换它。