Bonjour à tous,
Je suis à mon boulot en train de faire du C# par manque de boulot C++, et je viens de m'apercevoir que le foreach en C# a la précondition que l'objet soit non nul (un objet instancié vide suffit pour qu'aucune exception ne soit levée). Je trouve cela assez dommage d'obliger l'utilisateur à vérifier lui-même que l'objet n'est pas nul de la façon suivante :
alors qu'il parait évident, que cette condition pourrait être vérifiée (en en plus je crois que de toute façon elle l'est, puisqu'une exception est levée) directement dans le code du foreach, ce qui aurait pour conséquence de reproduire exactement le même comportement que le code ci-dessus, mais d'économiser mes pauvres doigts ^^. j'aurais donc plusieurs questions pour ce sujet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 if (monObjet != null) { foreach(monType m in monObjet) { } }
- Premièrement, je comprend la stratégie mise en place côté C#, le choix était conceptuel, et ils on préféré faire lever une exception. Mais je n'aurais pas fait comme ça personnellement, car je trouve que cela ne devrait pas nécessairement être bloquant. Et vous ?
- Enfin un rapport avec le C++ : comment les ranged-based for et std::for_each ou même boost::for_each (si le comportement est différent) sont ils gérés ? De la même façon ?
- Connaissez vous un endroit sur le net où je puisse trouver des infos claires à ce sujet, sans vous déranger la prochaine fois.. le dernier draft côté C++ ? Et pour C# ? Pareil ?
Merci d'avance pour vos réponses, et vos avis ^^
Partager