我想這個Java(Android版)的代碼轉換爲C#(MonoDroid的),但我不明白的<Item extends OverlayItem>
的Java到C#:擴展了通用
public class BalloonOverlayView<Item extends OverlayItem> extends FrameLayout
我想這個Java(Android版)的代碼轉換爲C#(MonoDroid的),但我不明白的<Item extends OverlayItem>
的Java到C#:擴展了通用
public class BalloonOverlayView<Item extends OverlayItem> extends FrameLayout
它正在爲類型參數添加一個約束。它類似於C#中的where
子句。
在Java中,你必須:
public class BalloonOverlayView<Item extends OverlayItem> extends FrameLayout
哪裏Item
是必須繼承或實現類型OverlayItem
類型參數。在C#中,這將寫爲:
public class BalloonOverlayView<Item> : FrameLayout where Item : OverlayItem
您可以看到約束是如何移動到最後,但在其他方面是類似的。這是非常,所以我會建議名稱TItem
像這樣:
public class BalloonOverlayView<TItem> : FrameLayout where TItem : OverlayItem
這有助於明確類型參數和普通類型之間的非常重要的區別。
有關,當你想使用的類型約束這樣的討論,I go into this at length in a previous answer.
它是與此相同:
public class BalloonOverlayView<Item> : FrameLayout where Item : OverlayItem
或無論如何。我沒有VS。 (我在酒店的電腦上)
這意味着parametrised型Item
必須的OverlayItem
語義的子類,這意味着它使如果它沒有延伸,則無法實例化具有參數化類型的BalloonOverlayView OverlayItem