Generische Typen ??

14/12/2007 - 10:40 von Peter Haus | Report spam
Hallo NG.

Kann mir jemand Verstehen helfen?

Ich versuche mich gerade, in Generische Type etwas schlauer zu machen.
Was ich unten nicht verstehe ist.
Es wird über die IComparable Schnittstelle die CompareTo() Funktion
aufgenommen.
Das Beispiel funktioniert.
Aber Wieso? Wo ist die Implementierung von CompareTo()?
Ich dachte, bei Interfaces gibt es keine Implementierung, diese muss erst
noch
hinzugefügt werden.

Kann mir jemand diese Frage beantworten.

Gruss Peter


Public Function findElement(Of T As IComparable)(ByVal searchArray As T(),
ByVal searchValue As T) As Integer

Dim sX As String
If searchArray.GetLength(0) > 0 Then

For i As Integer = 0 To searchArray.GetUpperBound(0)
sX = searchArray(i).ToString
If searchArray(i).CompareTo(searchValue) = 0 Then
Return i
End If

Next i
End If
Return -1
End Function


'Aufruf
Dim stringArray() As String = {"abc", "def", "xyz"}
Dim stringSearch As String = "abc"
Dim integerArray() As Integer = {7, 8, 9}
Dim integerSearch As Integer = 8
MsgBox(CStr(findElement(Of String)(stringArray, stringSearch)))
MsgBox(CStr(findElement(Of Integer)(integerArray, integerSearch)))
 

Lesen sie die antworten

#1 Robert Schneider
14/12/2007 - 10:58 | Warnen spam
"Peter Haus" schrieb im Newsbeitrag
news:
Hallo NG.

Kann mir jemand Verstehen helfen?

Ich versuche mich gerade, in Generische Type etwas schlauer zu machen.
Was ich unten nicht verstehe ist.
Es wird über die IComparable Schnittstelle die CompareTo() Funktion
aufgenommen.
Das Beispiel funktioniert.
Aber Wieso? Wo ist die Implementierung von CompareTo()?
Ich dachte, bei Interfaces gibt es keine Implementierung, diese muss erst
noch
hinzugefügt werden.

Kann mir jemand diese Frage beantworten.

Gruss Peter


Public Function findElement(Of T As IComparable)(ByVal searchArray As T(),
ByVal searchValue As T) As Integer

Dim sX As String
If searchArray.GetLength(0) > 0 Then

For i As Integer = 0 To searchArray.GetUpperBound(0)
sX = searchArray(i).ToString
If searchArray(i).CompareTo(searchValue) = 0 Then
Return i
End If

Next i
End If
Return -1
End Function


'Aufruf
Dim stringArray() As String = {"abc", "def", "xyz"}
Dim stringSearch As String = "abc"
Dim integerArray() As Integer = {7, 8, 9}
Dim integerSearch As Integer = 8
MsgBox(CStr(findElement(Of String)(stringArray, stringSearch)))
MsgBox(CStr(findElement(Of Integer)(integerArray, integerSearch)))






Wieso? searchArray(i) ist doch ein String bzw. Integer bei deinen
Beispielaufrufen. Und diese Klassen implementieren jeweils IComparable. Wenn
du ein Array übergeben willst, welches Elemente enthàlt, die von einer
selbstentwickelten Klasse stammen, dann muss die Klasse auch IComparable
implementieren. So ist das halt schon von den .NET-Klassen Integer/String
bereits erledigt.

Gruß,
Robert
e-mail: r_.s_chnei_der\wein_gart_ner.com (remove all '_' and replace '\'
with
'@')

Ähnliche fragen