이 자바 (안드로이드) 코드를 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 #에서 일반적인 접두사로 접두어가 붙은 형식 매개 변수 이름 지정T
, 그래서 나는 그 이름을 추천 할 것이다.TItem
이렇게 :
public class BalloonOverlayView<TItem> : FrameLayout where TItem : OverlayItem
이렇게하면 형식 매개 변수와 일반 형식을 구별하는 데 도움이됩니다.
이와 같은 타입 제약을 언제 사용하는지에 대한 논의는,나는 이전의 대답에서 이것을 길게 입력한다.
그것은 이것과 같습니다 :
public class BalloonOverlayView<Item> : FrameLayout where Item : OverlayItem
또는 그렇다. 나는 나와 VS가 없다. (나는 호텔 컴퓨터에있다)
이것은 매개 변수화 된 유형Item
의 하위 클래스 여야합니다.OverlayItem
의미 상으로, 이것은 BalloonOverlayView가 확장되지 않으면 매개 변수화 된 유형으로 인스턴스화하는 것을 의미하지 않는다는 것을 의미합니다.OverlayItem