Classe Dictionnary

Le
Gilbert Tordeur
Bonjour,
J'ai un peu de mal à comprendre comment utiliser cette classe. Je déclare
une variable :
Private DicForm As Dictionary(Of String, ParamForm) = Nothing

où ParamForm est une structure, et la clé d'accès est une chaîne de
caractère. Mais quand je veux créer une instance en spécifiant la capacité
initiale :
DicForm = New Dictionary(20)

j'obtiens une erreur, alors que cette forme figure parmi la liste de
surcharge. Dès lors je suis un peu perdu. Quelqu'un peut-il m'expliquer ?

Merci d'avance,
Gilbert
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrick Philippot
Le #12184791
Bonjour,

Gilbert Tordeur wrote:
Private DicForm As Dictionary(Of String, ParamForm) = Nothing
DicForm = New Dictionary(20)

j'obtiens une erreur, alors que cette forme figure parmi la liste de
surcharge. Dès lors je suis un peu perdu. Quelqu'un peut-il
m'expliquer ?



Dictionary(Of String, ParamForm) et Dictionary sont 2 types différents. La
ligne

DicForm = New Dictionary(20)

essaie donc d'affecter une référence à une instance de Dictionary à une
variable de type Dictionary(Of String, ParamForm), ce qui est illégal. la
syntaxe correcte est:

DicForm = New Dictionary(Of String, ParamForm)(20)

Cordialement.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Gilbert Tordeur
Le #12184781
"Patrick Philippot" message de news:
Bonjour,

Gilbert Tordeur wrote:
Private DicForm As Dictionary(Of String, ParamForm) = Nothing
DicForm = New Dictionary(20)

j'obtiens une erreur, alors que cette forme figure parmi la liste de
surcharge. Dès lors je suis un peu perdu. Quelqu'un peut-il
m'expliquer ?



Dictionary(Of String, ParamForm) et Dictionary sont 2 types différents. La
ligne

DicForm = New Dictionary(20)

essaie donc d'affecter une référence à une instance de Dictionary à une
variable de type Dictionary(Of String, ParamForm), ce qui est illégal. la
syntaxe correcte est:

DicForm = New Dictionary(Of String, ParamForm)(20)

Cordialement.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr




Merci beaucoup Patrick. J'ai toujours été dérouté par la lecture de deux
paires de parenthèses successives. Connais-tu un article de fond à lire sur
ce sujet ?
Bonne soirée,
Gilbert
Patrick Philippot
Le #12184771
Gilbert Tordeur wrote:
Merci beaucoup Patrick. J'ai toujours été dérouté par la lecture de
deux paires de parenthèses successives. Connais-tu un article de fond
à lire sur ce sujet ?



Je ne vois pas pour le moment. Une recherche sur "VB generics" devrait
pointer sur de tels articles.

En fait il faut voir les parenthèses de Dictionary(Of String, ParamForm) non
pas comme des parenthèses de passage d'arguments mais comme des parenthèses
de transtypage. C'est l'équivalent VB des templates du C++. Le type
Dictionary est "paramétrable", le type réel à utiliser étant passé à la
compilation.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Gilbert Tordeur
Le #12184761
C'est plus clair pour moi maintenant.
Merci,
Gilbert

"Patrick Philippot" message de news: %23V%
Gilbert Tordeur wrote:
Merci beaucoup Patrick. J'ai toujours été dérouté par la lecture de
deux paires de parenthèses successives. Connais-tu un article de fond
à lire sur ce sujet ?



Je ne vois pas pour le moment. Une recherche sur "VB generics" devrait
pointer sur de tels articles.

En fait il faut voir les parenthèses de Dictionary(Of String, ParamForm)
non pas comme des parenthèses de passage d'arguments mais comme des
parenthèses de transtypage. C'est l'équivalent VB des templates du C++. Le
type Dictionary est "paramétrable", le type réel à utiliser étant passé à
la compilation.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr





Publicité
Poster une réponse
Anonyme