32 votes

Pouvez-vous utiliser des paramètres facultatifs dans le ciblage de code .Net 3.5?

Je cherche à écrire une bibliothèque qui utilise la nouvelle fonctionnalité de paramètres facultatifs de C # 4.0, mais je veux la cibler sur la version 3.5 du framework. Est-ce possible? Les paramètres facultatifs sont-ils du sucre syntaxique de la même manière que les méthodes d'extension?

25voto

Bernard Vander Beken Points 1219

Avec VS2010 RC, j'ai pu créer une application .NET 3.5 qui utilise des paramètres facultatifs en C #.

Alors oui, tout tourne autour du sucre syntaxique.

13voto

demius Points 133

VS 2010 prend en charge les paramètres facultatifs dans C # pour les solutions .NET 3.5. Cependant, une mise en garde est que le compilateur en ligne de commande signalera les erreurs.

Donc, si vous avez des builds automatisés en cours d'exécution, - en utilisant NANT ou autre chose en utilisant le compilateur en ligne de commande - vos builds échoueront.

5voto

Lee Richardson Points 810

Comme Jon Skeet, j'obtenais que "La fonction 'paramètre optionnel' ne peut pas être utilisée car elle ne fait pas partie de la spécification du langage 3.0 C #". Cependant, dans la version RTM de Visual Studio, vous pouvez sélectionner la version de langue sur "par défaut" dans Propriétés du projet-> Build-> Advanced. Cela m'a permis de travailler.

3voto

Frans Harinck Points 31

Vous pouvez utiliser des paramètres facultatifs et nommés dans un cadre ciblé d'une version précédente tant que les assemblys sont créés dans un environnement de développement pour v4 (par exemple VS2010). Mais vous devez être conscient de la compilation ou de la publication de sites Web d'exécution dans ce cas, le compilateur du cadre cible sera utilisé. Et comme les compilateurs des anciens frameworks ne comprennent pas la syntaxe des paramètres optionnels et nommés, cela entraînera des erreurs de compilation.

2voto

Timothy Carter Points 7079

Je n'ai pas de VS2010 installé ici pour vérifier, mais je crois que ce serait purement une fonctionnalité du langage, et, par conséquent, devrait être utilisable quel que soit le cadre ciblées.

Edit: en Regardant ce lien (et quelques autres), il apparaît que les paramètres facultatifs compiler des arguments de méthode avec un [opt] attribut dans l'il. Je ne sais pas si ce paramètre existe dans les versions précédentes de la clr, mais encore j'imagine que c'est.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X