3

이 자바 (안드로이드) 코드를 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 #에서 일반적인 접두사로 접두어가 붙은 형식 매개 변수 이름 지정T, 그래서 나는 그 이름을 추천 할 것이다.TItem이렇게 :

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

이렇게하면 형식 매개 변수와 일반 형식을 구별하는 데 도움이됩니다.

이와 같은 타입 제약을 언제 사용하는지에 대한 논의는,나는 이전의 대답에서 이것을 길게 입력한다.


2

그것은 이것과 같습니다 :

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

또는 그렇다. 나는 나와 VS가 없다. (나는 호텔 컴퓨터에있다)


1

이것은 매개 변수화 된 유형Item의 하위 클래스 여야합니다.OverlayItem

의미 상으로, 이것은 BalloonOverlayView가 확장되지 않으면 매개 변수화 된 유형으로 인스턴스화하는 것을 의미하지 않는다는 것을 의미합니다.OverlayItem

연결된 질문


최근 질문