3

このJava(Android)コードをc#(MonoDroid)に変換しようとしていますが、理解できません<Item extends OverlayItem>

public class BalloonOverlayView<Item extends OverlayItem> extends FrameLayout
4

3 に答える 3

9

typeパラメーターに制約を追加しています。whereこれは、C# の句に類似しています。

Javaでは、次のようになります。

public class BalloonOverlayView<Item extends OverlayItem> extends FrameLayout

Itemtypeをサブクラス化または実装する必要があるtypeパラメーターはどこにありますかOverlayItem。C#では、これは次のように記述されます。

public class BalloonOverlayView<Item> : FrameLayout where Item : OverlayItem

制約が最後に移動する方法を確認できますが、それ以外は類似しています。C#では、接頭辞が付いた型パラメーターに名前を付けるのTが非常に一般的であるため、次のTItemような名前をお勧めします。

public class BalloonOverlayView<TItem> : FrameLayout where TItem : OverlayItem

これは、型パラメーターと通常の型の非常に重要な違いを明確にするのに役立ちます。

このような型制約をいつ使用したいかについての議論については、前の回答でこれについて詳しく説明します。

于 2012-05-27T23:58:18.203 に答える
3

これと同じです:

public class BalloonOverlayView<Item> : FrameLayout where Item : OverlayItem
于 2012-05-27T23:57:30.887 に答える
1

これは、パラメータ化されたタイプItemがのサブクラスでなければならないことを意味しますOverlayItem

意味的には、これは、BalloonOverlayViewが拡張されていない場合、パラメーター化されたタイプでインスタンス化しても意味がないことを意味します。OverlayItem

于 2012-05-27T23:59:00.063 に答える