2009-12-05 6 views
0

actuel J'utilise cette méthode pour déterminer si un personnage est en ligne:C# trouver une certaine condition d'un objet via un dictionnaire

public bool OnlineByServer(string username) 
    { 
     foreach (Character c in this.characters.Values) 
     { 
      if (c != null && c.Username.Equals(username)) 
      { 
       return true; 
      } 
     } 
     return false; 
    } 

est-il un moyen plus rapide de le faire?

Répondre

1

Il n'y a pas vraiment une façon plus rapide de le faire, si vous voulez conserver les caractères que les valeurs du dictionnaire. En raison du non-tri, une recherche O (n) linéaire doit être effectuée.

9

Le moyen le plus rapide serait de faire du nom d'utilisateur la clé du dictionnaire.

2
Dictionary<string, Character> usersByUsername = new Dictionary<string, Character>(); 

...

if (usersByUsername.Keys.Contains(username)) 
    { 

    } 
0
  • Recherche d'un élément de clé: O (1)
  • Recherche d'un élément de valeur: O (n)
Questions connexes