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?
Réponses
Trop de publicités?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.
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.
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.
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.