문제

vb.net을 사용하여 QuickSort Base 클래스를 만들려고 노력하고 있으며,이를 incomplayable elements를 가져옵니다. 서명은 다음과 같습니다.

public shared sub Sort(ByVal values() as IComparable)

그러나 복식 배열을 통과하면 컴파일러가 오류를 제공합니다.

Dim numbers(100) as double
Dim random as new Random(0)
for i as integer = 0 to numbers.length - 1
  numbers(i) = random.NextDouble()
Next

QuickSort.Sort(numbers) ' gives compiler error.

오류 오차는 다음과 같습니다. 오차는 다음과 같습니다. 오차는 다음과 같습니다.

Error   88  Value of type '1-dimensional array of Double' cannot be converted to '1-dimensional array of System.IComparable' because 'Double' is not derived from 'System.IComparable'. C:\Proving Grounds\Module1.vb

.NET 문서는 Double의 IComparable을 구현한다고 명시합니다. .NET 컴파일러가 이렇게 할 수없는 이유는 무엇입니까?

도움이 되었습니까?

해결책

하지만 double 캐스트 될 수 있습니다 IComparable, 그 의미는 아닙니다 double[] 캐스트 될 수 있습니다 IComparable[]. 간단한 옵션은 새로운 것을 만드는 것입니다 IComparable[] 배열 및 데이터를 위에 또는 귀하의 경우 복사하십시오. 원래 배열을 다음과 같이 시작하십시오. IComparable[].

사실, 나는 제네릭을 사용하고 싶은 유혹을 받았습니다 IComparable<T> 또는 IComparer<T> 인터페이스 또는 Comparison<T> Delegate- 모든 제네릭 사용 - 이것은 또한 Comparer<T>.Default 및 비 디폴트 비교.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top