繁体   English   中英

Java到C#:在Generic中扩展

[英]Java to C#: Extends in Generic

我试图将这个Java(Android)代码转换为c#(MonoDroid),但我不明白<Item extends OverlayItem>

public class BalloonOverlayView<Item extends OverlayItem> extends FrameLayout

它正在为type参数添加一个约束。 它类似于C#中的where子句。

在Java中,您有:

public class BalloonOverlayView<Item extends OverlayItem> extends FrameLayout

其中Item是必须子类化或实现OverlayItem类型的类型参数。 在C#中,这将被写为:

public class BalloonOverlayView<Item> : FrameLayout where Item : OverlayItem

您可以看到约束如何移动到最后,但在其他方面类似。 在C#中通常使用以T为前缀的名称类型参数 ,因此我建议使用名称TItem如下所示:

public class BalloonOverlayView<TItem> : FrameLayout where TItem : OverlayItem

这有助于明确类型参数和普通类型之间非常重要的区别。

有关何时需要使用类型约束的讨论, 我将在前一个答案中详细讨论。

它与此相同:

public class BalloonOverlayView<Item> : FrameLayout where Item : OverlayItem

这意味着参数化类型Item必须是OverlayItem的子类

从语义上讲,这意味着如果不扩展OverlayItem ,则使用参数化类型实例化BalloonOverlayView是没有意义的。

暂无
暂无

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

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