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 :

référence circulaire en c#


Sujet :

C#

  1. #1
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 37
    Par défaut référence circulaire en c#
    salut tout le monde

    après l'exécution de mon code une référence circulaire me génère un stack overflow :


    Code c# : 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
    /****************   class A *******************/
        public class ClasseA
        {
     
            ClasseB objB = new ClasseB();
     
            int[] table = new int[50000];
     
            public ClasseA()
            {
                TestRefCirculaire.compteur++;
     
                ClasseB objB = new ClasseB();
     
     
     
            }
        }



    Code c# : 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
        /***************** class B ***********************/
     
        public class ClasseB
        {
            ClasseA objA = new ClasseA();
     
            int[] table = new int[50000];
     
            public ClasseB()
            {
     
                TestRefCirculaire.compteur++;
                ClasseA objA = new ClasseA();
            }
     
     
        }


    Code c# : 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
        /********************* TestRefCirculaire ************/
     
        public class TestRefCirculaire
        {
            public static int compteur;
            public TestRefCirculaire()
            {
                compteur = 0;
            }
     
            public static void Main(String[] args)
     
            {
     
                ClasseA test = new ClasseA();
            }
     
        }


    tout à fais normal : c'est qui le premier ? la poule ou l'œuf ?

    est ce que quelqu'un a une idée comment on peut résoudre la référence circulaire en c# SVP ?!!!

    merci d'avance et a++

  2. #2
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    est ce que quelqu'un a une idée comment on peut résoudre la référence circulaire en c# SVP ?!!!

    C'est un problème de design a revoir et C# n'a voir la dedans

  3. #3
    Membre chevronné Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Par défaut
    Salut,

    le premier c'est ClasseA, puisque tu l'appelles en premier. Mais comme dit Olibara, il n'y a aucun moyen de résoudre cela, c'est jusque que ce code est faux, tout simplement. Que cherches-tu à faire, exactement ?

  4. #4
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Euh je veux pas être méchant mais c'est quoi ce code tout pourri?

    Quand tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ClasseB objB = new ClasseB();
    dans le constructeur de la classe A ca ne met une nouvelle instance de ClasseB dans le membre objB mais plutot dans une variable objB qui a comme scope uniquement le constructeur...

  5. #5
    Membre chevronné Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Par défaut
    Citation Envoyé par PitMaverick78 Voir le message
    Euh je veux pas être méchant mais c'est quoi ce code tout pourri?
    Bwaaah, il faut pas non plus être méchant comme ça Que celui qui n'a jamais pêché jette la première pierre...

    Mais ton smiley nuance bien, ça va

    Plus sérieusement, je pense que badr007 cherche à faire quelque chose, et il s'y est mal pris. D'ailleurs s'il n'avait pas de problème, il ne serait pas venu chercher de l'aide ici (de l'aide, pas des jugements )

    Donc, je réitère ma question du post précédent : badr007, que cherches-tu à faire exactement ? On va essayer de t'aider à prendre la bonne piste.

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Par défaut
    Avec des try catch ?

  7. #7
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Avec des try catch ?
    Un try catch permet de recuperer une exception dans un cas d'exception comme le nom l'indique

    Mais un try catch ne permet pas de rectifier un design assurément impossible !

    Comme le suggere MetalGeek, badr007 devrait expliquer ce qu'il essaye de faire pour pouvoir lui suggerer une autre solution.

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Par défaut
    Un try catch permet de recuperer une exception dans un cas d'exception comme le nom l'indique
    Un stack overflow leve une exception StackOverflowException.
    Celle ci doit donc pouvoir être intercepte dans un try catch non?

    http://msdn.microsoft.com/fr-fr/libr...exception.aspx

    (apres je ne cherche pas a savoir pourquoi il a ecrit son code comme ca)

  9. #9
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Oui mais la ca ne sert à rien car de toute facon le programme plantera 10 fois sur 10. Si c'est pour mettre dans le try catch un code dont on est sur qu'il ne marchera pas, autant ne pas écrire de programme

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 114
    Par défaut
    Bonjour,

    Une petite précision sur le try/catch pour une exception de type overflow, l'exception ne peut plus être récupérée depuis la version 2.0 du framework .NET.

  11. #11
    Membre chevronné Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Par défaut
    Euh, vu que l'auteur du post n'y a jamais répondu et que ça fait 4 jours, je pense qu'un modérateur devrait mettre 'résolu' mdr... Plus besoin de se faire des noeuds au cerveau...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/06/2006, 17h02
  2. [SQL 2K5] Pb : ON DELETE CASCADE : référence circulaire
    Par n00bi dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 29/05/2006, 08h48
  3. Référence circulaire
    Par Mvu dans le forum ASP
    Réponses: 3
    Dernier message: 27/04/2006, 14h38
  4. [EXCEL] : référence circulaire à cause d'une macro
    Par repié dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/01/2006, 10h41
  5. [DEB] DBdesigner 4 et référence circulaire
    Par Ranbaz dans le forum DBDesigner
    Réponses: 1
    Dernier message: 13/07/2005, 17h32

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