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 :

[Class] Constructeur, retourner un "null"


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Nadd
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 160
    Par défaut [Class] Constructeur, retourner un "null"
    Bonsoir,
    Je suis en train de développer une classe "conteneur" (assez basique pour le moment).

    Voici le code de "base" :

    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
     
        class AMList<T>
        {
            private Type CollectionType;
            private List<T> Collection;
            private readonly bool isReadyToUse = false;
     
            public AMList()
            {
                CollectionType = typeof(T);
     
                if (CollectionType.BaseType == typeof(AMBaseClass))
                {
                    Collection = new List<T>();
                }
            }
        }
    Comme indiqué dans le code, le type T ne peut faire partie que de la hiérarchie de la classe AMBaseClass.

    Ce que j'aimerais en fait, c'est que le constructeur fasse passer à null l'a référence à l'objet (comme c'est le cas pour diverses classes) si le CollectionType.BaseType ne correspond pas à ce qui est requis (AMBaseClass).

    Comment faire pour qu'au final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    AMList<string> list = new AMList<string>();
    if(list == null)
    {
    ...
    }
    ce code fonctionne ?

    En vous remerciant d'avance,

    Nadd.

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Il y a bien plus simple, encore faut-il le savoir. Regarde les contraintes pour le type paramètre concernant les génériques : http://msdn2.microsoft.com/fr-fr/lib...70(VS.80).aspx

    Tu pourras ainsi imposer le type de base et l'erreur se produira à la compilation. Bien plus pratique, sauf si tu as à tout prix besoin de récupérer une référence null dans ce cas

  3. #3
    Membre confirmé Avatar de Nadd
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 160
    Par défaut
    Les deux solutions m'intèressent :p

  4. #4
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Alors va voir le lien que j'ai indiqué. Il ya des exemples avec, donc tu ne devrais pas avoir de soucis pour la mise en oeuvre

  5. #5
    Membre confirmé Avatar de Nadd
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 160
    Par défaut
    Déja mis en oeuvre même si je vais m'attarder plus longtemps sur le lien indiqué.

    Je voulais simplement dire que le cas d'un "null" en retour m'intèressait aussi, même si dans mon cas l'utilisation du "where" est plus pratique en effet.

    Merci beaucoup en tout cas,

    Amicalement,

    Nadd.

  6. #6
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    A partir du moment où tu entres dans le constructeur, je ne pense pas qu'on puisse annuler l'opération pour récupérer une référence null, quelqu'un confirmera peut être.

    Il y a toujours la possibilité de lever une exception dans le constructeur par contre.

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Par défaut
    Citation Envoyé par Nadd
    Je voulais simplement dire que le cas d'un "null" en retour m'intèressait aussi, même si dans mon cas l'utilisation du "where" est plus pratique en effet.
    Fais une méthode statique qui renvoit soit une instance de AMList<T> si tout va bien, soit un null. La méthode fait le test sur le type pour savoir s'il faut renvoyer un null ou non. Le constructeur se contente d'initialiser CollectionType et Collection (et passe private du coup).

  8. #8
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par StormimOn
    Il y a bien plus simple, encore faut-il le savoir. Regarde les contraintes pour le type paramètre concernant les génériques : http://msdn2.microsoft.com/fr-fr/lib...70(VS.80).aspx

    Hum.. j'adore la traduction
    où T : classe

  9. #9
    Membre confirmé Avatar de Nadd
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 160
    Par défaut
    Encore une fois merci ,

    Je vais me pencher sur la nouvelle alternative!

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

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