[英]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.