Private Shared Function PrimaryComparison(ByVal Item1 As MyObj, ByVal Item2 As MyObj) As Integer Return Item2.MyProp.CompareTo(Item1.MyProp) End Function
Altså så det giver samme resultat som at sige "order by item1, item2" i sql.
Private Shared Function PrimaryComparison(ByVal Item1 As MyObj, ByVal Item2 As MyObj) As Integer Dim sort As Int = Item2.MyProp.CompareTo(Item1.MyProp)
If (Int = 0) sort = SekundærSortering(Item1, Item2)
Ja, great! Ved du i øvrigt hvordan man pænest kan gøre brug af variabler inde i funktionen? Også mht. søgninger.
Dim test As Integer = 23 Private Shared Function PrimaryComparison(ByVal Item1 As MyObj, ByVal Item2 As MyObj) As Integer // brug "test" til noget Return Item2.MyProp.CompareTo(Item1.MyProp) End Function
Det jeg mener er, at man i C# kan skrive sine delegates inline i sort- eller find-metoden på en liste. I vb.net synes jeg, det er lidt bøvlet, at man skal have metoderne lagt uden for det scope man nu er i og så bruge addressof.
Men det har nu ikke den store indflydelse på, hvordan man bruger variable i sin sortering-delegate. Havde det været i C#, i en anonym delegate, kunne du selvføgelig have nøjes med at definere den som en lokal variabel i den metode hvorfra den anynyme delegate oprettes og defineres i - i VB.Net er du nødt til at definere den på klasse-niveau. (Den skal nu nok være defineret som Shared for at du kan bruge den fra en Shared-metode.)
Imidlertid ved jeg ikke rigtigt hvad du vil bruge din test-variable til? Du har ikke selv nogen kontrol over i hvilken rækkefølge dine PrimaryCompare, og hvor mange gange, den bliver kaldt mens at de interne mekanismer i listen sørger for at sortere den. Dermed er det temmeligt usikkert, hvad der ligger i test-variablen undervejs eller til sidst.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.