簡體   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