c# - 如何制作派生方法,它采用与 C# 中的重写函数不同的参数?

标签 c#

我有一个类,是这样的:

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/

相关文章:

c# - 如何在 wpf (DataGrid) 中格式化 TimeSpan?

c# - Resharper - 在进行代码清理时保留命名参数

c# - 有没有像更新病毒定义数据库那样工作的框架?

c# - 重定向到隐藏查询字符串参数的页面asp.net

c# - 当鼠标按下时 MouseHover 不触发

c# - 另一个 PInvoke - 错误消息显示未找到源?

c# - 在 webbrowser Control 中使用框架

c# - 在通过网络发送之前压缩位图

c# - 在 C# 中创建数据透视表

c# - 使用 C# 显示日期时间