Java для C #: расширяется в общем

Я пытаюсь преобразовать этот код Java (Android) в c # (MonoDroid), но я не понимаю<Item extends OverlayItem>

public class BalloonOverlayView<Item extends OverlayItem> extends FrameLayout

Ответы на вопрос(3)

Item должен быть подклассомOverlayItem

Семантически это означает, что нет смысла создавать экземпляр BalloonOverlayView с параметризованным типом, если он не расширяется.OverlayItem

Решение Вопроса

where оговорка в C #.

В 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

или как бы то ни было. У меня нет VS на меня. (Я на компьютере отеля)

Ваш ответ на вопрос