Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Classe Dictionnary

4 réponses
Avatar
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

4 réponses

Avatar
Patrick Philippot
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
Avatar
Gilbert Tordeur
"Patrick Philippot" a écrit dans le
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
Avatar
Patrick Philippot
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
Avatar
Gilbert Tordeur
C'est plus clair pour moi maintenant.
Merci,
Gilbert

"Patrick Philippot" a écrit dans le
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