我有一个类,是这样的:
class BaseClass
{
protected int X;
virtual void ChangeParameters(int NewX)
{
this.X = newX;
}
}
class DerivedClass1 : BaseClass
{
private int a;
private int b;
}
class DerivedClass2 : BaseClass
{
private int a;
}
当我想覆盖派生类中的 ChangeParameters() 函数时,问题就来了,因为它们中的每一个都可以有不同数量的参数。
那么问题来了——我如何创建一个虚函数,它在派生类中的参数数量可以变化?
附言。我不想使用 params 关键字,因为我更希望类的用户确切知道他必须向函数传递多少参数。
最佳答案
你不能。如果是覆盖
,则签名必须完全匹配。如果您想要不同的参数,它听起来不像是 override
- 毕竟......调用者将如何调用它,只知道基本类型? (替代主体等)
BaseClass obj = GetSomeConcreteObject(); // actually a DerievedClass2
obj.ChangeParameters({what would go here?});
在我看来,这些只是独立的方法。您可以有一个虚拟
方法接受一个数组(带或不带params
),但是您需要接受调用者可以提供任何大小。
关于c# - 如何制作派生方法,它采用与 C# 中的重写函数不同的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10171697/