このJava(Android)コードをc#(MonoDroid)に変換しようとしていますが、理解できません<Item extends OverlayItem>
public class BalloonOverlayView<Item extends OverlayItem> extends FrameLayout
このJava(Android)コードをc#(MonoDroid)に変換しようとしていますが、理解できません<Item extends OverlayItem>
public class BalloonOverlayView<Item extends OverlayItem> extends FrameLayout
typeパラメーターに制約を追加しています。where
これは、C# の句に類似しています。
Javaでは、次のようになります。
public class BalloonOverlayView<Item extends OverlayItem> extends FrameLayout
Item
typeをサブクラス化または実装する必要があるtypeパラメーターはどこにありますか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
意味的には、これは、BalloonOverlayViewが拡張されていない場合、パラメーター化されたタイプでインスタンス化しても意味がないことを意味します。OverlayItem