CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

C# - KeyValuePair

Ibadez38
Ibadez38
Niveau 47
23 novembre 2021 à 17:20:06

Bonjour,

Je suis en train d'examiner du code et je vois cette ligne:
List<KeyValuePair<AnimationClip, AnimationClip>> animsKeyValuPairList = new List<KeyValuePair<AnimationClip, AnimationClip>>();

C'est la première fois que je vois le mot clé KeyValuePair et même en regardant la doc de microsoft j'ai du mal à comprendre.
Si quelqu'un peut m'expliquer à quoi sert se mot clé et quelle est la différence entre la ligne de code plus haut et celle-ci:
List<AnimationClip, AnimationClip> animsKeyValuPairList = new List<AnimationClip, AnimationClip>();

Deuxième question, c'est la première fois que je vois un paramètre dans une parenthèse lors de la déclaration d'une liste.
List<AnimationClip> animationsList = new List<AnimationClip>'''(aoc.animationClips)''';

Comment traduire cette ligne, ce paramètre, quelle est la différence entre cette ligne de code au dessus et celle-ci:
List<AnimationClip> animationsList = new List<AnimationClip>;

Merci d'avance pour vos réponses.

Pseudo supprimé
Pseudo supprimé 23 novembre 2021 à 17:45:57

Qu'est-ce que tu comprends pas dans la doc ? :(

Ibadez38
Ibadez38
Niveau 47
23 novembre 2021 à 18:02:03

An non je viens de confondre liste et dictionnaire là où dans le dictionnaire on a une clé et une valeur.

Du coup c'est quoi la différence entre une liste utilisant le mot clé KeyValuePair et un dictionnaire?

Edit: Je suis en train de lire https://dalisama.me/wtf-csharp-1 je pense avoir trouver la réponse à ma première question.

Message édité le 23 novembre 2021 à 18:04:44 par Ibadez38
Pseudo supprimé
Pseudo supprimé 23 novembre 2021 à 20:37:33

Apprends à lire avec attention, mot par mot, y a absolument rien de compliqué :(

https://docs.microsoft.com/fr-fr/dotnet/api/system.collections.generic.dictionary-2?view=net-6.0
https://docs.microsoft.com/fr-fr/dotnet/api/system.collections.generic.keyvaluepair-2?view=net-6.0

Dictionary<TKey,TValue> Classe
Représente une collection de clés et de valeurs.
KeyValuePair<TKey,TValue> Structure
Définit une paire clé/valeur qui peut être définie ou récupérée.

Dictionary<TKey,TValue> c'est une collection de clés et de valeurs

(Plus précisément un dictionnaire associe à chaque clé au plus une valeur, autrement dit un dictionnaire c'est une structure de données qui représente une fonction partielle entre le type TKey et le type TValue et dont l'implémentation consiste à stocker chaque paire clé-valeur, contrairement à une fonction algorithmique du type f(x) = 2x typiquement)

KeyValuePair<TKey,TValue> ça représente juste une paire, pas une collection de paires mais juste une paire

Imagine un tableau où la colonne de gauche liste l'ensemble des départements français et où la colonne de droite représente le nombre d'habitants du département. Bah le tableau tout entier ça correspond à un dictionnaire, et chaque ligne du tableau correspond à une paire clé-valeur.

Pseudo supprimé
Pseudo supprimé 23 novembre 2021 à 20:39:57

Ah et aussi, t'utilises mal le mot "mot-clé", c'est pas des mots-clé. C'est respectivement une classe et une structure.

Un mot-clé c'est un mot qui est parsé d'une façon particulière, là Dictionary et KeyValuePair c'est parsé comme n'importe quel identifier, c'est pas des mots-clés.

Des exemples de mot clé : if, class, function, while.

Le code while(cond) expr va aboutir à un arbre de syntaxe différent de if(cond) expr

Dans le premier cas on aurait un arbre du genre WhileLoop (parseExpr cond) (parseExpr expr)
Dans le second IfCondition (parseExpr cond) (parseExpr expr)

Là où foo() et bar() par exemple donneront
FunctionCall (Identifier "foo")
FunctionCall (Identifier "bar")

Même parsing, la différence se fait au niveau des valeurs mais pas de la structure de l'arbre

Message édité le 23 novembre 2021 à 20:44:11 par Pseudo supprimé
Ibadez38
Ibadez38
Niveau 47
23 novembre 2021 à 23:32:40

J'apprend sur Udemy, et plein de chose que tu as cité, je ne les ai jamais vue et j'ai encore du mal à saisir. Bref j'ai un niveau encore "débutant".

Sinon pour la deuxième question tu as une idée?

List<AnimationClip> animationsList = new List<AnimationClip>(aoc.animationClips);

Ce qu'il y a entre parenthèse c'est ce qui va aller dans la liste animationList? J'ai un doute.

Merci pour tes réponses.

Magrozz
Magrozz
Niveau 7
24 novembre 2021 à 01:32:18

Le 23 novembre 2021 à 23:32:40 :
J'apprend sur Udemy, et plein de chose que tu as cité, je ne les ai jamais vue et j'ai encore du mal à saisir. Bref j'ai un niveau encore "débutant".

Sinon pour la deuxième question tu as une idée?

List<AnimationClip> animationsList = new List<AnimationClip>(aoc.animationClips);

Ce qu'il y a entre parenthèse c'est ce qui va aller dans la liste animationList? J'ai un doute.

Merci pour tes réponses.

C'est la taille (ou capacité) de ta liste. Normalement, aoc.animationClips devrait être un int.

boucif
boucif
Niveau 24
24 novembre 2021 à 09:34:25

Pas forcément la taille, ça peut être aussi une autre "liste" et dans ce cas là tu l'initialise avec les valeurs de l'autre liste
Tu as 3 constructeurs :
SURCHARGES
List<T>()
Initialise une nouvelle instance de la classe List<T> qui est vide et possède la capacité initiale par défaut.

List<T>(IEnumerable<T>)
Initialise une nouvelle instance de la classe List<T> qui contient des éléments copiés à partir de la collection spécifiée et qui possède une capacité suffisante pour accepter le nombre d’éléments copiés.

List<T>(Int32)
Initialise une nouvelle instance de la classe List<T> qui est vide et a la capacité initiale spécifiée.

https://docs.microsoft.com/fr-fr/dotnet/api/system.collections.generic.list-1.-ctor?view=net-6.0

Pour le coup j'ai pas compris le délire d'utiliser une list de keyvaluepair alors qu'on a le type de dictionnaire, à moins que la clé n'est pas unique.
Peut être que ce cours est fait par une personne non confirmé.

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment