3

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

public class BalloonOverlayView<Item extends OverlayItem> extends FrameLayout

3 답변


8

これは、typeパラメータに制約を追加しています。これは、whereC#の節。

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

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

このようなタイプの制約をいつ使いたいかについては、私はこれまでの答えでこれを長きにわたって扱っています。


2

それはこれと同じです:

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

またはそれはそうです。私にはVSがありません。 (私はホテルのコンピュータにいます)


1

これは、パラメータ化された型ItemのサブクラスでなければならないOverlayItem

意味的には、拡張されていない場合はパラメータ化された型のBalloonOverlayViewをインスタンス化することは意味がありませんOverlayItem

リンクされた質問


最近の質問