Meilleur auteur de réponses
Utiliser un prédicat pour rechercher un élément d'un tableau

Question
-
Bonjour,
J'ai un tableau de structures (Dim ppTable() As xId) dont je souhaite trouver un élément qui égal à New xId(a,b,c). (cf. code ci-dessous)
Question : a,b,c sont des variables dont la valeur change, comment les transmettre en arguments à mon prédicat ?
Private Structure xId
Dim no1 As Integer
Dim no2 As Integer
Dim no3 As Integer
End Structure
index = System.Array.FindIndex(ppTable, AddressOf zIsEqual)
Private Shared Function zIsEqual(ByVal itm As xId) As Boolean
If itm.Equals(New xId(a,b,c)) Then
Return True
Else
Return False
End If
End Function
Réponses
-
Bonjour,
une façon simple de passer des arguments est d'utiliser une méthode anonyme pour prédicat :
Sinon utilisez un wrapper. Voir exemple ici : Using Predicates with VB.Net ArraySub Main() Dim a As Integer = 2 Dim b As Integer = 2 Dim c As Integer = 2 Dim ppTable(2) As xId ppTable(0) = New xId(1, 1, 1) ppTable(1) = New xId(2, 2, 2) ppTable(2) = New xId(3, 3, 3) Dim index As Integer = System.Array.FindIndex(Of xId)(ppTable, Function(x) x.no1 = a And x.no2 = b And x.no3 = c) Console.WriteLine(index) Console.ReadLine() End Sub
Cordialement
- Marqué comme réponse kyz lundi 28 février 2011 09:48
Toutes les réponses
-
Bonjour,
Vous pouvez les envoyer comme paramètres dans la méthode zIsEqual :
Private Shared Function zIsEqual(ByVal itm As xId, ByVal a As Integer, ByVal b As Integer, ByVal c As Integer) as Boolean
Cordialement,
Alex
________________
Astuces pour Visual Studio 2010
XNA – Développement jeux vidéo
Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, SharePoint, WPF
Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.
-
-
Bonjour,
Quelle est l’erreur affichée par le compilateur ?
Cordialement,
Alex
________________
Astuces pour Visual Studio 2010
XNA – Développement jeux vidéo
Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, SharePoint, WPF
Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.
-
Bonjour,
une façon simple de passer des arguments est d'utiliser une méthode anonyme pour prédicat :
Sinon utilisez un wrapper. Voir exemple ici : Using Predicates with VB.Net ArraySub Main() Dim a As Integer = 2 Dim b As Integer = 2 Dim c As Integer = 2 Dim ppTable(2) As xId ppTable(0) = New xId(1, 1, 1) ppTable(1) = New xId(2, 2, 2) ppTable(2) = New xId(3, 3, 3) Dim index As Integer = System.Array.FindIndex(Of xId)(ppTable, Function(x) x.no1 = a And x.no2 = b And x.no3 = c) Console.WriteLine(index) Console.ReadLine() End Sub
Cordialement
- Marqué comme réponse kyz lundi 28 février 2011 09:48
-
Bonjour,
Kyz, est-ce que la méthode de Nikho fonctionne dans votre cas?
Cordialement,
Alex
________________
Astuces pour Visual Studio 2010
XNA – Développement jeux vidéo
Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, SharePoint, WPF
Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.
-