[英]C#: How do I call a static method of a base class from a static method of a derived 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.