IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[c#] Histoire d'array


Sujet :

C#

  1. #1
    Candidat au Club
    Développeur Web
    Inscrit en
    Janvier 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut [c#] Histoire d'array
    Tout d'abord, bonjour!

    Je suis en train de développer une application, et j'utilise des tableaux de class. Le problème, enfin ma question, est:

    Est-il possible de nommer mon array avec des strings? Comme en php par exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $array["toto"] = "une valeure"
    En C#, ca donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class users
    {
    	public string strName;
    	public int intTime;
    }
    ...
    private users[] User = new users[5];
    ...
    User[0] = new users();
    User[0].strName = "Admin";
    User[0].intTime = 0;
    User[1] = new users();
    User[1].strName = "Toto";
    User[1].intTime = 0;
    Mais j'aimerai pouvoir accéder aux données par *User["Admin"]* par exemple, car je reçois les donnes du réseau avec le strName. Car faire un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public int fctID(string strName)
    {
    	int intLength = User.Length;
     
    	for(int i = 0; i < intLength; i++)
    	{
    		if(User[i].strName == strName)
    		{
    			return i;
    		}
    	}
    	return -1;
    }
    Me semble demander beaucoup de ressources s'il y a 200 personnes connectées qui demande les informations des autres personnes. (Je développe un serveur d'un mmorpg simpliste pour des essais personnels).

    Il faut imaginer que un joueur souhaite envoyer un message à "x". Il va taper dans une fenêtre de chat "sendto mon message". Le serveur va recevoir ça , et trouver le joueur x dans les joueurs connectes, pour trouver l'ID du tableau, et donc du thread de connexion etc... Parcourir tout le tableau à chaque fois me semble un peu farfelu. Je sais pas s'il y a des fonctions déjà existante, ou si d'autres options s'offrent à moi.

    Enfin, si vous avez des idées, c'est très volontiers!

    Merci d'avance, et à bientôt.

  2. #2
    jdc
    jdc est déconnecté
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 15
    Points : 18
    Points
    18
    Par défaut
    Je pense que ca doit être réalisable en utilisant un array et une énumération.
    La structure enum te servirait pour mapper la relation entre ton string et un numéro. Tu pourrais alors utiliser l'énum pour faire ta rechercher au sein de l'array.
    Je m'explique?

  3. #3
    Candidat au Club
    Développeur Web
    Inscrit en
    Janvier 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par jdc
    Je m'explique?
    Volontiers^^ Mes connaissances ne sont pas assez poussées pour comprendre (Mais j'ai dev avec ma fonction de for et return avant, ça tournait correctement). Je pense pouvoir m'en sortir comme je l'ai fait, mais je suis ouvert a tes explications^^

  4. #4
    Membre averti Avatar de bouvda
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 252
    Points : 318
    Points
    318
    Par défaut
    Mais j'aimerai pouvoir accéder aux données par *User["Admin"]* par exemple, car je reçois les donnes du réseau avec le strName
    Je pense que tu devrais te pencher sur la classe Hashtable. Tu peux trouver plein d'infos sur MSDN ou sur le net grâce à ton ami .

  5. #5
    jdc
    jdc est déconnecté
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 15
    Points : 18
    Points
    18
    Par défaut
    Je rectifie. Bouvda est plus sage que moi (d'où son nom peut-être), une hashtable devrait te permettre de conserver tes couples clefs-objets.

    Petit exemple avec des objets datetime:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    using System;
    using System.Collections;
     
    namespace hashtable
    {
        class Program
        {
            static void Main(string[] args)
            {
                DateTime dt1 = DateTime.Now;
                DateTime dt2 = DateTime.Now;
                DateTime dt3 = DateTime.Now;
     
                Hashtable ht = new Hashtable();
     
                ht.Add("Date1", dt1);
                ht.Add("Date2", dt2);
                ht.Add("Date3", dt3);
     
                IDictionaryEnumerator en = ht.GetEnumerator();
                while (en.MoveNext())
                {
                    DateTime dt = (DateTime)en.Value;
                    Console.WriteLine(dt.ToString());
                }
            }
        }
    }

  6. #6
    Candidat au Club
    Développeur Web
    Inscrit en
    Janvier 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci bien de vos réponses!

    Je vais analyser cela pendant les prochains jours et vous tiendrais au courant!


  7. #7
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Citation Envoyé par bouvda
    Je pense que tu devrais te pencher sur la classe Hashtable
    je pense qu'il est plus élégant d'utiliser les generics, vu qu'on est au C# 2.0 pourquoi s'en priver

    pour le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class users
    {
    	public string strName;
    	public int intTime;
    }
    celà équivaut à utiliser un Dictionary
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dictionary<string,int> users = new Dictionary<string,int>();
    ...
    users["Admin"] = 0; ...

  8. #8
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Citation Envoyé par smyley
    je pense qu'il est plus élégant d'utiliser les generics, vu qu'on est au C# 2.0 pourquoi s'en priver
    +1
    Tu évites en plus de devoir caster dans tous les sens, ou même, comme je vois des fois, de faire des Parse sur des Object.ToString()
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

Discussions similaires

  1. [XSL][ARRAY]
    Par miloud dans le forum XMLRAD
    Réponses: 4
    Dernier message: 02/10/2003, 15h46
  2. Erreur "size array"
    Par boobob dans le forum C
    Réponses: 3
    Dernier message: 06/08/2003, 10h18
  3. TStringList en array of string
    Par JediKerian dans le forum Langage
    Réponses: 2
    Dernier message: 20/03/2003, 15h37
  4. Réponses: 2
    Dernier message: 23/02/2003, 00h49
  5. passage en paramètre d'un array dynamique 2D
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2002, 19h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo