Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Atteint de JavaScriptite Aiguë [Cyril Durand]

Expert ASP.net Ajax et WCF, Cyril Durand parle dans son blog de point techniques sur ASP.net, ASP.net Ajax, JavaScript, WCF et .net en général. Cyril est également consultant indépendant, n'hésitez pas à le contacter pour de l'assistance sur vos projets

Actualités

  • Blog de Cyril DURAND, passionné de JavaScript, Ajax, ASP.net et tout ce qui touche au developpement Web Client-Side.

    N'hésitez pas à me contacter pour vos projets .net : architecture, accompagnement, formation, ...

    View Cyril Durand's profile on LinkedIn
    hit counters


    Expertise Commerce server et BizTalk

C# et paramètre optional
En VB.net on peut créer des fonctions ayant des paramètres optionelles, cela donne du code ressemblant à :
Public Sub Toto(Optional ByVal Nom As String = "", Optional ByVal Age As Integer = -1)
    Console.WriteLine(
"Nom : " & Nom)
    Console.WriteLine(
"Age : " & Age.ToString())
End Sub
 
Si on veut appeller cette méthode en spécifiant seulement certains des paramètres on peut faire ainsi :
Sub Main()
    Toto(Age:=20)
End Sub
 
Mais comment cela est il traduit au niveau du code MSIL (Ms Intermediate Language) ? puisque C# n'accepte pas l'utilisation des arguments optionnels on pourrait penser que le remplacement est fait via le compilateur VB. Pour confirmer cela rien de mieux que Reflector :-)
 
.method public static void Toto([opt] string Argument1, [opt] int32 Argument2) cil managed
{
.param [1] = string("")
.param [2] = int32(0xFFFFFFFF)
.maxstack 8
On voit qu'étonnement les paramètres optionels sont pris en compte au niveau du code MSIL. Mais quelle est le code C# généré par Reflector pour cette fonction ?

public static void Toto([Optional] string Nom /* = "" */, [Optional] int Age /* = -1 */)
{
    Console.WriteLine("Nom : " + Nom);
    Console.WriteLine("Age : " + Age.ToString());
}

Le code de Reflector n'est pas complet, pour définir les valeurs par défaut il faut utiliser l'attribut DefaultParameterValue. Ce qui donne :

public static void Toto([Optional][DefaultParameterValue("Cyril")] String Nom, [Optional][DefaultParameterValue(-1)] int Age)
{
    Console.WriteLine("Nom : " + Nom);
    Console.WriteLine("Age : " + Age.ToString());
}

Désormais on pourra appeller en VB la méthode Toto écrite en C# de la même facon que le premier exemple.
 

Attention ce que je viens d'expliquer ne veut pas dire qu'on peut utiliser des arguments par défaut en C# puisque le langage ne le permet pas, cela montre juste comment rendre possible l'utilisation des paramètres optionels pour un langage le supportant (comme VB) à partir d'un code C#.
Posted: mardi 22 août 2006 00:05 par cyril
Classé sous :
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

coq a dit :

Déjà que je le fuis en VB...
Y'a pas à dire ça renforce encore plus mon amour des surcharges ! ;-)
# août 22, 2006 08:21

.net is good... C# is better ;) a dit :

Cyril nous a récemment parlé des paramètres optionels et leur implémentation en C# en vu de l'utilisation...
# août 24, 2006 16:53
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01