J'ai commencé à remarquer que, parfois, lorsque j'appelais une méthode en C #, les noms des paramètres de la méthode que j'appelais apparaissaient dans la liste intellisense accompagnée de deux points et que je pouvais alors formater la méthode. appelez ainsi:
MethodCall(parameter1:value1, parameter2:value2);
Est-ce une nouvelle fonctionnalité linguistique? Cela me rappelle la façon dont vous pouvez appeler des procédures stockées en SQL et spécifier des noms de paramètres, comme suit:
spDoSomeStuff @param1 = 1, @param2 = 'other param'
Est-ce une caractéristique similaire? Si oui, dans quel but? Si non, de quoi s'agit-il et à quoi sert-il?.
C'est une nouvelle fonctionnalité. Voir ici: http://msdn.Microsoft.com/en-us/library/dd264739.aspx Les paramètres nommés sont standard dans ObjectiveC par exemple. Il faut un certain temps pour s’y habituer, mais c’est une bonne chose. Ce n'est qu'en regardant que vous pouvez savoir à quoi sert un paramètre.
Les paramètres nommés vous permettent de définir explicitement la valeur des arguments dans un ordre personnalisé, indépendamment de la signature. Les signatures de méthode sont définies par les types d'argument, c'est-à-dire Foo (int i, bool b), qui accepteront uniquement les arguments de type int et bool dans cet ordre. Les arguments nommés vous permettent de passer b en premier et i en second.
Il vaut la peine de mentionner que, contrairement aux paramètres facultatifs, vous pouvez ignorer certains arguments et ne transmettre que les paramètres qui vous intéressent.
public void Example(int required, string StrVal = "default", int IntVal = 0)
{
// ...
}
public void Test()
{
// This gives compiler error
// Example(1, 10);
// This works
Example(1, IntVal:10);
}
Scott Gu a introduit cette nouvelle fonctionnalité dans son blog:
Ce sont les Paramètres nommés et facultatifs qui sont entrés avec C # 4.
@Krumelur a déclaré que "les paramètres nommés sont standard dans ObjectiveC par exemple".
Ce n'est pas vraiment correct. Objective-C utilise une notation infixe, de sorte que ce message appelle:
[foo setRed:255 Green:255 Blue:0];
est le setRed: Vert: Bleu: message (y compris ces deux points!) avec les arguments (255,255,0) entremêlés dans le nom du message.
Bien qu'accordée, à première vue, la syntaxe d'Objective-C donne l'impression qu'Objective-C utilise des paramètres nommés. Mais ce n'est pas vraiment correct, et mal comprendre la différence peut être un obstacle à l'apprentissage d'Object-C.
(J'aurais répondu dans un commentaire, mais j'ai perdu tous mes points de réputation et je recommence. Drat. C'est la vie.)