[C#] Génériques

Bon, ceci est un thread qui ne demande pas d’aide pour une fois. Je voulais juste dire que chaque jour, je me rends compte de plus en plus que CSharp, c’est un langage monstrueusement puissants: j’ai découvert les génériques il y a peu, je ne savais par contre pas que l’on pouvait se créer ses propres génériques!

Résultat, depuis que je sais ca, j’ai codé plein de classes “Helper” génériques: par exemple une classe Singleton qui, dès qu’une classe en est dérivée, devient une classe singleton (une seule instance dans tout le programme). Et ca, en 8 lignes de code!

Franchement, un grand merci au type qui a inventé le CSharp.

Maintenant si vous connaissez d’autres “trucs” comme ca du langage, je suis preneur. Car je suis sur qu’il y a d’autres trucs énormes comme ca dans ce langage.

Dans la catégorie des nouveautés, tu as testé les types nullables ? int?, char?, etc. ?

Si tu viens du monde C++, tu connais problablement l’excellent live “Modern C++ Design”, de Andrei Alexandrescu (et sinon, cours vite le lire, c’est incontournable). Tu peux appliquer un certain nombre d’autres trucs comme Singleton au language C#, quoique pas tous quand même car certains reposent sur le compile-time programming.

J’ai écrit un article sur les principales nouveautés des génériques il y a quelques temps, avec quelques exemples. Tu peux aller le voir ici si ca t’intéresse. On y parle generiques, iterateurs, types nullables, et pas mal de petites choses…

Oui, je suis assez fier, lol :P" .

Girafologue, en plus c’est grâce a ton article que j’avais découvert les génériques :P. Bon je vais me documenter sur les types nullable ca à l’air fnu :P.

Au contraire de l’avis de girafologue, moi je trouve que les anonymous delegate, c’est de la balle :stuck_out_tongue:

[quote name=‹ GloP › date=’ 26 Jul 2005, 10:08’]Au contraire de l’avis de girafologue, moi je trouve que les anonymous delegate, c’est de la balle :stuck_out_tongue:
[right][post=« 380231 »]<{POST_SNAPBACK}>[/post][/right][/quote]
Faut juste tomber sur le cas où c’est ultime et y penser, sinon tu passes à travers toute ta vie. :stuck_out_tongue: Le coup de voir des exemples d’utilisation concrect, c’est pas mal pour se dire ensuite « ah mais oui dans tel cas ca pourrait me servir. », c’est ce qu’il m’est arrivé en tout cas.

Tiens marrant ça, je tombe aujourd’hui justement sur un article de codeproject qui présente une classe SingletonProvider basée sur les generics : http://www.codeproject.com/csharp/GenericSingleton.asp

[quote name=‹ GloP › date=’ 26 Jul 2005, 09:08’]Au contraire de l’avis de girafologue, moi je trouve que les anonymous delegate, c’est de la balle :stuck_out_tongue:
[right][post=« 380231 »]<{POST_SNAPBACK}>[/post][/right][/quote]

Exactement.
Je m’en suis servi pas mal de fois sur de la conversion de tableaux avec Array.Convert<T, T>().

[quote name=‹ GloP › date=’ 26 Jul 2005, 09:08’]Au contraire de l’avis de girafologue, moi je trouve que les anonymous delegate, c’est de la balle :stuck_out_tongue:
[right][post=« 380231 »]<{POST_SNAPBACK}>[/post][/right][/quote]
Tiens, je viens de m’en servir aujourd’hui. Pour l’instant j’en suis au stade de « tiens, c’est pratique dis donc ».

[quote name=‘lordabdul’ date=’ 27 Jul 2005, 21:06’]Tiens, je viens de m’en servir aujourd’hui. Pour l’instant j’en suis au stade de “tiens, c’est pratique dis donc”.
[right][post=“380923”]<{POST_SNAPBACK}>[/post][/right][/quote]

Moi j’y trouve vraiment pas d’interet si ce n’est rendre le code confus (va t’en maintenir du code avec des méthodes anonymes de partout).

Niveau rapidité de codage, en faisant “tab tab” VS crée le délégué et l’eventhandler automatiquement … donc c’est pas plus rapide.

Bref … ca sert a quoi ?

[quote name=‘Vko’ date=’ 3 Aug 2005, 12:17’]Bref … ca sert a quoi ?
[right][post=“382951”]<{POST_SNAPBACK}>[/post][/right][/quote]
Bah je pense que ça sert pour des fonctions qui prennent un delegate en paramètre, par exemple (y’en a plein dans le framework 2.0, avec des paramètres templ…euh, generiques, j’veux dire). Des fois, c’est des fonctions qui font des trucs pas très compliqués, et à qui tu passes des trucs très simples (de toutes façons, tu vas pas faire un anonymous delegate de 50 lignes, ça serait moche, dégueux et imbitable à lire). Là, passer un anonymous delegate, c’est vachement plus lisible que de passer un delegate dont le code (qui fait 3 lignes) se trouve 100 lignes plus loin. Dans ce genre de cas, justement, le TAB-TAB de Visual te créé le delegate, ouais cool, mais question lisibilité…
Enfin chacun ses goûts, peut-être, aussi.

Voila, comme le dit abdul, c’est grave plus lisible de passer une fonction de comparaison avec :

que de passer une fonction a l’autre bout du fichier source.

Mouaip c’est vrai que pour ce genre de truc, ca peut gagner en lisibilité.