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 :

Petit bout de code que je ne saisis pas trop


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 109
    Par défaut Petit bout de code que je ne saisis pas trop
    Bonjour à tous !

    Voilà je dois analyser ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public List<T> Filter<T>() where T : ForumObject
    	{
    		List<T> f = new List<T>();
    		foreach(ForumObject fo in forumsObj)
    		{
    			if(fo is T)
    				f.Add((T)fo);
    		}
    		return f;
    	}
    forumsObj c'est un "List<ForumObject>"

    Je comprend pas pourquoi il y a "fo is T", sachant que dans la méthode on a déjà une contrainte qui spécifie que T doit être de type ForumObject et fo est forcément un objet ForumObject lui aussi...

    Est-ce que j'ai pas saisi un truc ou c'est le code qui est bizarre ?

    Merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    fo doit hériter de ForumObject, mais cela ne veut pas dire qu'il est "FORCEMENT" un objet de type T (une autre classe pourrait hériter de forumObjcet sans pour autant que ca soit la classe T

    d'ou l'explication et le "fo is T"

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 109
    Par défaut
    Je suis désolé mais je n'ai pas compris.

    fo est une instance de la classe forumObject alors pourquoi tu dis qu'il "hérite" de forumObject... ?

    Mais je crois avoir compris :

    En fait là on stipule que la classe T doit implémenter ou hériter de ForumObject (exemple une classe Toto qui hérite de ForumObject).

    et on veut récupérer uniquement des objets de type ForumObject et non de type Toto...

    Mais il y a quand même un truc qui m'échappe.

    Si la classe T est une classe de type ForumObject (lors de l'appel de la méthode), la "clause" where va l'accepter ? (en gros je veux savoir si T est de type ForumObject, est-ce qu'implicitement c'est comme si T héritait de ForumObject ?)

  4. #4
    Membre chevronné
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par défaut
    oui, le where permet de forcer le type de T. T doit forcément hériter de ForumObject. En revanche, une autre classe X peut aussi hériter de ForumObject. Or le type T est différent du type X. Si maintenant la liste forumObjects contient des instances de T et de Y, le test fo is T à tout son sens.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 109
    Par défaut
    Ok c'est clair maintenant merci à vous deux !

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 502
    Par défaut
    Selon la doc http://msdn.microsoft.com/en-us/library/scekt9xw.aspx
    "is" renvoie aussi true sur les classes dérivées.
    L'explication doit être bien plus subtile.

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 10/04/2008, 17h19
  2. Besoin d'un petit bout de code ( Administration )
    Par m0x00r dans le forum Langage
    Réponses: 2
    Dernier message: 02/11/2007, 12h54
  3. [Débutant] Comment adapter ce petit bout de code?
    Par wazodnuit dans le forum ASP.NET
    Réponses: 2
    Dernier message: 30/08/2007, 09h03
  4. Explication d'un (tout petit) bout de code^^
    Par xclam dans le forum Langage
    Réponses: 5
    Dernier message: 31/05/2007, 09h49
  5. [C#] Débutant : Pb avec ce trout petit bout de code
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 14
    Dernier message: 22/04/2006, 13h19

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