vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: Neuigkeiten im Framework 2.0... 
Autor: ModeratorDaveS (Moderator)
Datum: 17.07.04 16:50

Zu 1. Hier ist eine sehr einfache generische Klasse
Public Class SimpleGenericClass(Of T)
    Private _value As T
 
    Public Sub New(ByVal parm As T)
        _value = parm
    End Sub
 
    Public ReadOnly Property Val() As T
        Get
            Return _value
        End Get
    End Property
End Class
Und so kann ich das benutzen:
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
        Dim sgcint As New SimpleGenericClass(Of Integer)(3)
 
        Debug.WriteLine(sgcint.Val.ToString())
 
        Dim sgcstr As New SimpleGenericClass(Of String)("abc")
 
        Debug.WriteLine(sgcstr.Val)
    End Sub
Bei Public Class SimpleGenericClass(Of T) ist T ein Type als Parameter der Instanzierung. Die Variable _value, Property Val und Parameter parm im Constructor sind dann alle vom Typ T.

Das ist natürlich nicht besonders nützlich. Bei einer Klasse wie ArrayList aber sind alle Elemente vom Typ Objekt, was nicht typsicher ist, und bei Value Werten zu Boxing/Unboxing führt. Eine generische ArrayList könnte man z.B. als New ArrayList(Of Integer) anlegen, wobei die Elemente dann vom Typ Integer wären. MS hat ArrayList allerdings nicht als generische Klasse implementiert. Generic.Collection(Of T) war eingentlich ein schlechtes Beispiel (mir ist das Thema ja auch relativ neu), die Klasse soll eher als Basisklasse dienen. Es gibt aber List(Of T) was eine etwas erweiterte ArrayList Klasse ist.

Hier ist ein kleines Beispiel von List(Of T)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
  System.EventArgs) Handles MyBase.Load
        Dim l1 As New List(Of Integer)
 
        l1.Add(1)
        l1.Add(2)
        l1.Add(3)
        l1.Add(8)
        l1.Add(17)
        l1.Add(59)
 
        l1(1) = 44
 
        For Each i As Integer In l1
            Debug.WriteLine(i.ToString())
        Next
 
        Dim l7To44 As List(Of Integer) = l1.FindAll(AddressOf New FindBetween( _
          7, 44).Find)
 
        For Each i As Integer In l7To44
            Debug.WriteLine(i.ToString())
        Next
 
    End Sub
 
    Private Class FindBetween
        Private _numLow As Integer
        Private _numHigh As Integer
        Public Sub New(ByVal low As Integer, ByVal high As Integer)
            _numLow = low
            _numHigh = high
        End Sub
        Public Function Find(ByVal val As Integer) As Boolean
            If val >= _numLow AndAlso val <= _numHigh Then Return True
        End Function
    End Class
End Class
List(Of T).FindAll() nimmt ein System.Predicate(Of T). Hier wird es verwendet um Elemente zwischen zwei Nummern auszuwählen, aber jedes Auswahlkriterium könnte benutzt werden.

Man könnte FindBetween auch als generisch definieren, allerdings wird das ein wenig komplizierter wenn man etwas besonders mit den Objekten anfangen will, da VB natürlich keine Ahnung hat wozu ein "T" alles fähig ist. Es geht z.B. so:

    Private Class findBetween(Of T As IComparable)
        Private _numLow As T
        Private _numHigh As T
        Public Sub New(ByVal low As T, ByVal high As T)
            _numLow = low
            _numHigh = high
        End Sub
        Public Function Find(ByVal val As T) As Boolean
            If val.CompareTo(_numLow) > -1 AndAlso val.CompareTo(_numHigh) < _
              1 Then Return True
        End Function
    End Class
Das Klassenobjekt wird dann mit
New FindBetween(Of Integer)(7, 44)
angelegt (in diesem Beispiel). Und T könnte irgendeine Klasse sein, die IComparable implementiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Neuigkeiten im Framework 2.0...1.677ModeratorDaveS12.07.04 10:19
Re: Neuigkeiten im Framework 2.0...821spike2412.07.04 10:37
Re: Neuigkeiten im Framework 2.0...865ModeratorDaveS12.07.04 10:49
Re: Neuigkeiten im Framework 2.0...804ModeratorFZelle12.07.04 11:24
Re: Neuigkeiten im Framework 2.0...768ModeratorDaveS12.07.04 11:31
Auch auf CD818vbtest212.07.04 11:46
Re: Neuigkeiten im Framework 2.0...745WaldiMaywood12.07.04 17:07
Re: Neuigkeiten im Framework 2.0...729ModeratorDaveS12.07.04 17:51
Re: Neuigkeiten im Framework 2.0...689ModeratorFZelle12.07.04 19:01
Re: Neuigkeiten im Framework 2.0...745ModeratorDaveS12.07.04 19:16
PS...734ModeratorDaveS12.07.04 19:28
Re: PS...876ModeratorFZelle12.07.04 19:41
Re: PS...753WaldiMaywood12.07.04 19:48
Re: PS...791ModeratorDaveS12.07.04 20:05
Re: PS...728ModeratorFZelle12.07.04 20:11
Re: PS...768ModeratorDaveS12.07.04 20:49
Übrigens...728ModeratorDaveS19.07.04 09:48
Re: Übrigens...741ModeratorDaveS21.07.04 14:24
Re: Neuigkeiten im Framework 2.0...762ReinhardH12.07.04 23:50
Re: Neuigkeiten im Framework 2.0...809ModeratorDaveS13.07.04 09:21
Re: Neuigkeiten im Framework 2.0...704ReinhardH13.07.04 23:01
Re: Neuigkeiten im Framework 2.0...692WaldiMaywood17.07.04 14:10
Re: Neuigkeiten im Framework 2.0...798ModeratorFZelle17.07.04 14:45
Re: Neuigkeiten im Framework 2.0...733ModeratorDaveS17.07.04 16:50
Re: Neuigkeiten im Framework 2.0...725WaldiMaywood17.07.04 18:34
Re: Neuigkeiten im Framework 2.0...687ModeratorDaveS17.07.04 19:11
Asp.Net Web Developer Walkthrough813ModeratorDaveS21.07.04 15:42

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel