Ineffektiv kod? Förklara gärna vad som gör den långsam...
hej...
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...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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 |
Svara
Sv: Ineffektiv kod? Förklara gärna vad som gör den långsam...
Det är troligen din Try Catch som tar tid...
Man ska alltid försöka undvika dessa fall.
Du kan skriva funktionen som
1 2 3 4 5 6 7 | 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 |
Svara
Sv:Ineffektiv kod? Förklara gärna vad som gör den långsam...
Lite ringrostig men räcker det inte med :
1 2 3 4 5 6 7 | 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 |
Svara
Sv: Ineffektiv kod? Förklara gärna vad som gör den långsam...
Per, kan hända att det räcker med Is TextBox. Det beror på hur VB gör...
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.
Svara
Sv:Ineffektiv kod? Förklara gärna vad som gör den långsam...
Kan inte någon förklara skillanden mellan = och "is"...?
Svara
Sv: Ineffektiv kod? Förklara gärna vad som gör den långsam...
Svårt att förklara skillnaden då de har olika betydelse i olika sammanhang.
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.
Svara