2011-05-04 3 views
1

단식 또는 복식 만 수락 할 VB.NET에서 일반을 ​​정의하는 방법이 있습니까? 몇 가지 가능한 값 유형을 사용할 수있는 제네릭을 정의 할 수 있습니까? (VB.NET)

나는 내가 온라인으로 발견 한 내용을 바탕으로 다음과 같은 일을 시도했지만 아무도 컴파일 :

나는 target가 또는 만 Double?이 될 수 있습니다 지정하려면
Dim target As Nullable(Of {Single, Double}) 
Dim target As Nullable(Of T As {Single, Double}) 
Dim target As Nullable(Of T {Single, Double}) 
Dim target As Nullable(Of Single, Double) 
Dim target As Nullable(Of T As Single, Double) 

.

답변

3

Public Class NullableFloat(Of T As {Double, Single})은 제약 조건이있는 see here입니다.

그러나이 문은 generic 형식 TDoubleSingle을 모두 구현해야한다고 지정합니다. .Net 프리미티브는 봉인되어 있으므로 DoubleSingle 사이에 상속 관계가 없기 때문에 T이 두 제약 조건을 모두 충족시킬 수는 없습니다.

더 닷넷 유형이있을 수 있기 때문에 모두 DoubleSingle 당신이 Double 유형 중 하나 Value 속성 만 Double 또는 Single하지만, 왜 단지 Nullable(Of Double)를 사용하지 걸릴 세터와 NullableFloat라는 일부 복잡한 형태를 만들 수 있습니다.

+0

근본적인 Integral 및 Numeric 유형의 부족은 실제 고통입니다. 나는 그들이 연결 당 미래 버전을 위해 그것을 추가하는 것을보고 있다는 것을 알고있다. 나는 당신이 제안하는 것처럼 여러 함수 호출을 사용하는 것을 생각하지 않았다. 아마도 그것이 가능한 최선의 아이디어일지도 모른다. 제네릭 매개 변수를 제외하고 동일한 서명으로 모두 2, 3 또는 그 이상의 함수를 작성하지 않아야하는 방식을 기대했습니다. – eidylon

+0

은 새로운 대답이 의미가 있다는 것을 재고하고 희망을 가졌습니다. – Jodrell

+0

음, 아니. 'Of T As {Double, Single}'은 ** BOTH **'Double'과'Single'를 동시에 묘사합니다. 물론 불가능합니다. "다중 제약 조건"절은 모든 제약 조건이 참 ("And")이되도록 요구하며, 제약 조건 중 어느 하나가 참이라고 ("또는") 의미하지 않습니다. 따라서 정답은'아니요, 여러 가능한 숫자 유형을 사용할 수있는 제네릭 제약 조건을 정의 할 수있는 방법이 없습니다. 'Nullable을 사용하는 것과 아무런 관련이 없습니다. 이것은 하나의 메소드 나 함수보다는 CLASS (Of T)를 생성하고자 할 때 특히 짜증 스럽습니다. 닷넷에는 'Numeric'베이스 타입이 없습니다. – ToolmakerSteve

관련 문제