Paramètres optionels

[Résolu]
Signaler
Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
-
 fregolo52 -
Bonjour,

J'ai déclaré des paramètres d'une fonction comme étant optionels mais lorsque j'appelle ma fonction, elle m'impose de renseigner tous les paramètres... pourquoi ?

Exemple de déclaration de fonction avec paramètre optionel :
using

System.Windows.Forms;using

System.ComponentModel;
public

DialogResult fnMsgCr(
String S, [
Optional][
DefaultValue(
"")]
String sProc, [
Optional][
DefaultValue(
false)]
Boolean bYesNo)

-- Pourquoi faire simple quand on peut faire compliquer --

23 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
les paramètres optionnels n'existe qu'en VB 6 ! et malheureusement en vb.net

en C# on utilise les surcharges.

DialogResult fnMsgCr(String S, String sProc, [Boolean bYesNo) {}

DialogResult fnMsgCr(String S) {
   return fnMsgCr(S, string.Empty, false);
}

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
1
Merci


Décidément... y a pas à dire... le vb.net est plus évolué que le C#...

-- Pourquoi faire simple quand on peut faire compliquer --
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
 mais biensûr...

c'est pour ça que C# est case sensitive et pas vb.net
c'est pour ça que C# utilise int? et vb.net Nullable(Of Integer)
c'est pour ça que C# est plus lisible que vb.net
c'est pour ça que C# est strictement objet et pas vb.net...

je continue ou pas ?

nan... sans déconner vb.net est un très bon langage... mais il a un gros défaut... il a garder sa "compatibilité" avec vb6 !






Sébastien FERRAND
(

blog
)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
1
c'est justement ce qui fait sa qualité que n'a pas le C#... désolé mais ce serait trop long à expliquer... vb6 n'avait pas que des défauts... il était mono instance c'est vrai... et pas puissant c'est vrai.. mais ajouter les avantages de vb6 à vb.net n'est pas un défaut

l'avantage majeur du vb est qu'en 30 seconde on fait une appli qui tourne bien et qui fait beaucoup de choses... on développe 3 fois plus vite en vb.net qu'en C#...

mais bon... les gouts et les couleurs... lol

-- Pourquoi faire simple quand on peut faire compliquer --
Messages postés
143
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
25 octobre 2006

Je ne suis pas d'accord avec eldim sur le fait que C# est moins bien que VB6 et VB.NET. Il suffit juste de connaitre le langage et on developpe aussi vite en C# qu'en VB.NET.
Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
1
ben non on peut pas... exemple : en vb.net on tape "try" et y a le "catch" et le "end try" qui viennent se greffer... et c'est le cas pour beaucoup de choses...

et beaucoup de fonctions (grace au vb6) sont intégrées (et il n'y a pas déquivalent en C#)

-- Pourquoi faire simple quand on peut faire compliquer --
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
58
Pas d'accord non plus avec eldim non plus!
Pour ce qui est de la rapidité de codage, puisque tu en parles, Visual Studio n'a jamais été autant bien conçu. Avec un simple raccourci (qu'on peut même peut-être customizer) on peut insérer n'importe quel code de base (comme un try-catch).
Et s'il n'existe pas par défaut, on peut le créer soit même en faisant un snippet. Autrement dit, on peut insérer des centaines de lignes de code si on a envie, juste en un ou deux cliques, ou avec un raccourci.
Si une grosse partie des gens qui étaient en VB6 se sont tournés vers VB.NET ou C#, c'est qu'il (VB6) avait quand même des problème...
Mais bon, si t'es fan de VB6, on ne pourra pas te convaincre...

<hr size="2" />VC# forever
Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
1
Comment tu fais ça ?

-- Pourquoi faire simple quand on peut faire compliquer --
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
58
Pour un try-catch tu fais try + TAB
Pour un try-finally, tu fais tryf + TAB

Mais y'en a des tonnes d'autres, et si ça te suffit pas, tu peux créer les tiens....

<hr size="2" />VC# forever
Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
1
Merci


et comment tu les crées ?

-- Pourquoi faire simple quand on peut faire compliquer --
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
58
Menu Tools/Code Snippet Manager

<hr size="2" />VC# forever
Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
1
Merci,


je vai peut-être revoir ma position dans ce cas en mettant de l'eau dans mon vin lol...


par contre, perso je ne trouve pas très pratique les "}" à la place des "End xxx" car ça fait un peut fouilli...


Mais gros avantage du C# c'est qu'on n'a pas besoins d'enregistrer les DLL... et que l'on peut créer des opérateurs... choses que l'on ne peut pas faire (à ma connaissance en vb.net)

-- Pourquoi faire simple quand on peut faire compliquer --
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
58
C'est une question d'habitude pour les accolades...
Une fois qu'on les utilises règulièrement, ça ne dérange plus (je me disais la même chose que toi quand j'ai commencé le C# , je venais aussi de VB6 et je trouvais les '{'  bizarre! ).

<hr size="2" />VC# forever
Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
1
J'en suis réduit à mettre les "end ..." en commentaire lol
Sinon, en ce qui concerne les perfs, j'ai traduit en vb.net 95% des projets que j'ai trouvé en C# y compris de sourcesforges(les seuls que je n'ai pas pu traduire contenaient des opérateurs personnalisés) et j'ai fait des tests de durée d'exécution... et les 2 ont exactement les mêmes perfs... (merci le CLR)

-- Pourquoi faire simple quand on peut faire compliquer --
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
58
Sauf erreur y'a des traducteurs qui peuvent faire ce genre d'opérations, pas besoin de se les taper à la main .
Pour les performences, c'est relativement logique étant donné qu'ils sont tout les deux traduits en MSIL (comme tous les languages .NET.....)

<hr size="2" />VC# forever
Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
1
Les traducteurs ont pas mal de lacunes... que ce soit dans un sens ou dans l'autre...

-- Pourquoi faire simple quand on peut faire compliquer --
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
en vb.net 2, il est possible de faire de la surcharge d'opérateur... c'est justement l'une des nouveautés.

ce qu'il faut savoir... c'est que je suis MVP C#... mais en usage professionnel, je pratique aussi biern VB6, VB.net que C#... (windows forms, asp.net et asp3)... donc les avantages et inconvéniants de chaque langage ne me sont pas inconnu

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
1
tu peux me montrer comment tu fais cette surcharge en vb.net ?

-- Pourquoi faire simple quand on peut faire compliquer --
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
Public Shared Operator - (string param1, string param2)


...


End Operator






Sébastien FERRAND
(

blog
)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
1
ah oui ça marche même en vb.net merci

-- Pourquoi faire simple quand on peut faire compliquer --