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

Framework .NET Discussion :

[C# 2.0] Tableau statique dans une méthode


Sujet :

Framework .NET

  1. #1
    Membre régulier
    Inscrit en
    Mars 2002
    Messages
    118
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 118
    Points : 70
    Points
    70
    Par défaut [C# 2.0] Tableau statique dans une méthode
    Bonjour,

    Considérant le code ci-dessous, je me demande s'il est possible de déclarer une tableau static et const/readonly à l'intérieur d'une méthode. J'aimerais que ce tableau reste à l'instérieur de la méthode mais qui soit aloué qu'une seule fois, non-pas a chaque appel. Merci pour votre aide.

    Martin

    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
    public static int NbBitsOnOpt(int n)
    {
        byte[] PreComputedNbBitsOn = new byte[] {0, 1, 1, 2, 1, 2, 
            2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, 3, 4, 2, 
            3, 3, 4, 3, 4, 4, 5, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 
            3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 
            6, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 
            3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 2, 3, 3, 4, 3, 
            4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 
            4, 5, 5, 6, 5, 6, 6, 7, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 
            4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 
            5, 6, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 
            4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 2, 3, 3, 4, 
            3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 
            6, 4, 5, 5, 6, 5, 6, 6, 7, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 
            5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 
            7, 7, 8 };
        const int NbBits = sizeof(int);
        int nbBitsOn = 0;
     
        for (int i = 0; i < NbBits; i++)
        {
            nbBitsOn += PreComputedNbBitsOn[n & 0xFF];
            n >>= 8;
        }
     
        return nbBitsOn;
    }

  2. #2
    Membre régulier Avatar de Davide
    Profil pro
    Inscrit en
    Août 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 80
    Points : 84
    Points
    84
    Par défaut
    Je n'ai pas l'impression qu'une variable statique peut être déclarée dans une méthode même si celle-ci est statique.

    Pourquoi veux-tu absolument que ce tableau ne soit pas déclaré en instance?

    Edit: tiré de msdn -->

    Microsoft Visual Basic .NET ou Microsoft Visual Basic 2005 vous permettent de déclarer des variables locales statiques dans une méthode de classe.

    Et C# ?

  3. #3
    Membre régulier
    Inscrit en
    Mars 2002
    Messages
    118
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 118
    Points : 70
    Points
    70
    Par défaut
    Pourquoi veux-tu absolument que ce tableau ne soit pas déclaré en instance?
    Car je veux que la méthode soit : "autonome". Je veux être capable de faire un cut&paste dans une autre classe, application sans me dire : "Ah j'ai oublié le tableau"...

  4. #4
    Membre actif
    Inscrit en
    Août 2006
    Messages
    381
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 381
    Points : 252
    Points
    252
    Par défaut
    Car je veux que la méthode soit : "autonome". Je veux être capable de faire un cut&paste dans une autre classe, application sans me dire : "Ah j'ai oublié le tableau"...
    Pourquoi ne crées tu pas une classe que tu mets dans une librairie et que tu appelles où tu en as besoin ?
    Parce que si tu fais des copies/collés de ta méthode comment fais-tu si tu dois modifier cette méthode ?

    Bye

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Points : 1 561
    Points
    1 561
    Par défaut
    La réponse a ta question est : Non, ce n'est pas possible.

    En C#, tu ne peux pas déclarer une variable locale comme static donc partagée par tous les appels à cette méthode (et donc allouée et conservant sa valeur au fil des appels)
    Tu ne peux pas la déclarer comme const, car un type par référence déclaré comme const ne peut etre initialisé qu'a null, excepté le type string qui est un cas particulier.

    On en revient donc à la méthodologie. Où est l'intérêt de développer en objet, si c'est pour faire du copy/past. Fait plutot une classe générique d'outils, ou une collection de classes qui font ça, pour rejoindre mes petits camarades.

    Tout ce qui est possible en C++ ne l'est pas en C#. N'oublie pas que le C++ est hérité de C, par conséquent, des mécanismes comme déclaré comme static une variable locale, sont toujours présents même s'ils n'ont pas de sens réel, du moins dans ton cas particulier.

    En plus je ne vois pas vraiment l'intérêt de ta question, qu'est ce que cela peut bien te faire que le tableau soit réalloué à chaque exécution de ta méthode, puisque là tu dois également copier le code de déclaration, tu devra toujours le faire donc .... le partage de variable entre contextes n'est d'aucun intérêt ici.

Discussions similaires

  1. Variable statique dans une méthode
    Par Djakisback dans le forum Langage
    Réponses: 4
    Dernier message: 10/01/2008, 17h51
  2. Initialiser des variables dans une méthode Statique
    Par ero-sennin dans le forum Langage
    Réponses: 10
    Dernier message: 07/12/2007, 15h26
  3. Exécution d'un Thread dans une méthode statique
    Par barbiche dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 03/05/2007, 14h25
  4. Réponses: 3
    Dernier message: 14/04/2007, 16h06
  5. Réponses: 7
    Dernier message: 21/12/2005, 16h44

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