11
votes

Paramètres par défaut C #

C'est, probablement une réponse très simple pour quelqu'un. J'ai une méthode avec un paramètre facultatif code> comme;

public static Email From(string emailAddress, string name = "")
    {
        var email = new Email();
        email.Message.From = new MailAddress(emailAddress, name);
        return email;
    }


0 commentaires

4 Réponses :


-1
votes

C # 4.0 est incluse avec Visual Studio 2010 et le compilateur C # comprend les paramètres facultatifs. Donc oui, la définition de la langue C # 4.0 est quelque chose de différent de .NET 4.0. Je suppose qu'une méthode avec des paramètres facultatifs compilés pour .NET 3.5 affichera des méthodes surchargées lors de l'ouverture avec par exemple. Vs 2008


1 commentaires

Non, les paramètres facultatifs ne se transforment pas en méthodes surchargées - comme le dit JaredPar, le CLR a pris en charge les paramètres facultatifs depuis 1,0.



22
votes

Les paramètres facultatifs ont été pris en charge dans le CLR depuis 1.0. Des langues comme vb.net les utilisent depuis le début. Alors que la première version de C # pour les soutenir est 4.0, elle peut toujours générer un code valide pour un CLR 2.0 et en fait. Vous pouvez donc utiliser des paramètres par défaut en 2010 si vous ciblez le 3,5 CLR (ou 2.0, 3.0, etc.)

Ce type de support n'est pas limité aux paramètres par défaut. De nombreuses nouvelles fonctionnalités C # peuvent être utilisées sur une version antérieure du cadre car elles ne s'appuient pas sur des changements CLR. Voici quelques autres qui sont pris en charge sur les versions CLR 2.0 et supérieures

  • Arguments nommés: Ajouté C # 4.0
  • Expressions Lambda: Ajoutée C # 3.0
  • Propriétés auto: ajoutée C # 3.0
  • Méthodes d'extension: ajoutée C # 3.0
  • CO / CONTRA VARIANCE: AJOUTÉ C # 4.0

3 commentaires

Y a-t-il d'autres options de VS2010 qui peuvent être appliquées à .NET 3.5 de la même manière?


Comment l'IDE accomplit-il cela? J'ai consulté le fichier CSC et je ne trouve pas d'argument qui spécifie quelle version à construire à.


@Yuriy Je suis moins bien informé de la manière dont l'IDE fonctionne ici, mais au moins pour certaines fonctionnalités, l'EDI ne se soucie pas de ce que vous ciblez et suggérera de nouvelles fonctionnalités.



5
votes

Si vous compilez et examinez la sortie à l'aide d'un outil tel que l'ildas, vous verrez que le paramètre facultatif est simplement mis en œuvre en ajoutant un attribut aux métadonnées décrivant les paramètres formels de la méthode. Tant que cette classe d'attributs est disponible sur la plate-forme cible, il ne devrait pas y avoir de problème avec l'utilisation du code émis sur une plate-forme de dilontvel.


0 commentaires

2
votes

La version linguistique est indépendante de la version-cadre. Pour C #, ils arrivent principalement en parallèle, c'est-à-dire C # 4 et Framework 4.0 est venu avec Visual Studio 2010. (Cependant, il n'y a pas de version 3.5 de C #.)

avec VB Les numéros de version sont différents, car VB 7 était la première version VB.net. Ainsi, VB 10 vient en même temps que le cadre 4.0.

Les paramètres facultatifs sont une fonction de langue introduite dans C # 4. Lorsque vous utilisez VS 2010, vous utilisez C # 4, même si vous cible Cadrework 2.0, vous pouvez donc utiliser toutes les fonctionnalités C # 4.


1 commentaires

Sauf si les fonctionnalités que vous utilisez nécessitent des types qui n'existaient pas dans le cadre 2.0. Si le compilateur ne peut pas trouver une implémentation des classes DLR, vous ne pouvez pas utiliser "dynamique" par exemple.