私はこの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
型をサブクラス化または実装する必要がある型パラメータです。OverlayItem
。 C#では、これは次のように記述されます。
public class BalloonOverlayView<Item> : FrameLayout where Item : OverlayItem
制約が最後までどのように動かされたかを見ることができますが、そうでなければ類似しています。それは大変ですC#の一般的なプラクティスは、型パラメータの前にaT
、私はその名前をお勧めしますTItem
そのようです:
public class BalloonOverlayView<TItem> : FrameLayout where TItem : OverlayItem
これは、型パラメータと通常の型のかなり重要な違いを明確にするのに役立ちます。
このようなタイプの制約をいつ使いたいかについては、私はこれまでの答えでこれを長きにわたって扱っています。
それはこれと同じです:
public class BalloonOverlayView<Item> : FrameLayout where Item : OverlayItem
またはそれはそうです。私にはVSがありません。 (私はホテルのコンピュータにいます)
これは、パラメータ化された型Item
のサブクラスでなければならないOverlayItem
意味的には、拡張されていない場合はパラメータ化された型のBalloonOverlayViewをインスタンス化することは意味がありませんOverlayItem