繁体   English   中英

如何在 C# 中替换 base class 中的方法?

[英]How do I replace a method from base class in C#?

我有一个名为Broadcaster的基数 class,它可以使用 TCP 广播任何信息(字节数组)。现在我想创建一个名为ScreenBroadcaster的 class,它派生自Broadcaster并且可以广播屏幕截图。

但是我遇到了以下问题。 Class Broadcaster有一个Broadcast(byte[] data)方法,在ScreenBroadcaster中应该用Broadcast()代替(它应该从屏幕上获取要广播的数据)。 我不知道该怎么做,请帮助我!

我知道关键字override ,但它不允许更改要覆盖的方法的签名,因此在这种情况下不起作用。

你不能完全实现你想要的。 为什么? 考虑这个示例代码:

byte[] data = new byte[] { 0, 1, 2, 3 };
Broadcaster bcaster = new ScreenBroadcaster();
bcaster.Broadcast(data);

这是绝对正确的。 Broadcaster的任何引用都可以引用ScreenBroadcaster ,因为它派生自Broadcaster 但是ScreenBroadcaster (如果它是按照你想要的方式实现的)没有在这里调用的方法Broadcast(byte[]) 执行环境(.NET Framework)应该做什么? 不知道。 所以你想要的在 C# 中是不允许的。

但是为什么不在ScreenBroadcaster保留方法Broadcast(byte[] data)呢? 如评论中所述,您甚至可以在Broadcast()中使用它来避免代码重复。

public void Broadcast() {
  byte[] data;
  // Fill "data" with an image from screen
  Broadcast(data);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM