hej... Det är troligen din Try Catch som tar tid... Lite ringrostig men räcker det inte med : Per, kan hända att det räcker med Is TextBox. Det beror på hur VB gör... Kan inte någon förklara skillanden mellan = och "is"...? Svårt att förklara skillnaden då de har olika betydelse i olika sammanhang.Ineffektiv kod? Förklara gärna vad som gör den långsam...
Jag har en subrutin som jag skrivit som skall plocka in en cotrolcontainer som argument och resetta textboxarna som finns i den...
Men det händer inte "med en gång" när man kör funktionen, så jag funderar på om den är innefektiv på något sätt?
Om nån hugad vb.net-räv kan förklara om och gärna varför eventuellt den är innefektiv...
Public Shared Sub ResetTextboxes(ByVal Containerctrl As System.Windows.Forms.Control)
Dim antalkontroller As Integer = Containerctrl.Controls.Count
Dim ctrlcheck As New Control
For i As Integer = 0 To antalkontroller - 1
Dim err As Integer = 0
Try
ctrlcheck = CType(Containerctrl.Controls.Item(i), TextBox)
Catch ex As InvalidCastException
err = 1
End Try
If err = 0 Then
Containerctrl.Controls.Item(i).Text = ""
End If
Next
Sv: Ineffektiv kod? Förklara gärna vad som gör den långsam...
Man ska alltid försöka undvika dessa fall.
Du kan skriva funktionen som
Public Shared Sub ResetTextboxes(ByVal Containerctrl As System.Windows.Forms.Control)
For Each Control As Control In Containerctrl.Controls
If Control.GetType() Is GetType(TextBox) Then
Control.Text = ""
End If
Next
End Sub
Sv:Ineffektiv kod? Förklara gärna vad som gör den långsam...
Public Shared Sub ResetTextboxes(ByVal Containerctrl As System.Windows.Forms.Control)
For Each Control As Control In Containerctrl.Controls
If Control Is TextBox Then
Control.Text = ""
End If
Next
End Sub
Sv: Ineffektiv kod? Förklara gärna vad som gör den långsam...
Om båda sidorna är instanser av någon klass kontrollerar Is i alla fall om det är samma instans.
Det är tydligare att använda GetType för då är man säker på vad man jämför.Sv:Ineffektiv kod? Förklara gärna vad som gör den långsam...
Sv: Ineffektiv kod? Förklara gärna vad som gör den långsam...
Men Is används främst för att kontrollera referenstyper, alltså om två instanser av någonting är identiska, alltså att de har samma plats i minnet.
Is används också för att kontrollera om någonting är Nothing (Is Nothing), alltså inte alls upptar något minne. Det kan även användas för att jämföra två type objekt, som i mitt exempel. Kan också fungera med jämförelsen i Pers exempel, så där jämförs alltså typerna då du anger ett objekt på ena sidan och en klass på andra.
= kan användas för att tilldela eller jämföra värden, till exempel tal och strängar. I .NET 2.0 kan man överlagra operatorer och därmed ge dessa annan betydelse.