Quelle est la différence entre myVar
et myVar:
dans la liste de complétion automatique VS tout en travaillant avec des fonctions. Pourquoi le second est ajouté à cette liste?Pourquoi les mêmes variables sont-elles associées à un ':' dans la liste complète de Visual Studio?
Pourquoi les mêmes variables sont-elles associées à un ':' dans la liste complète de Visual Studio?
Répondre
C# 4,0 introduit named arguments. Cette fonction vous permet d'identifier les arguments de la méthode par leur nom au lieu de leur position:
public void Foo(int bar, string quux)
{
}
// Before C# 4.0:
Foo(42, "text");
// After C# 4.0:
Foo(bar: 42, quux: "text");
// Or, equivalently:
Foo(quux: "text", bar: 42);
IntelliSense a été mis à jour pour cette fonctionnalité, c'est pourquoi son mécanisme d'autocomplétion offre maintenant deux choix lorsqu'un symbole accessible à partir de la portée actuelle a le même nom qu'un argument de méthode.
Ceci est probablement le cas lorsque vous définissez une valeur pour un paramètre lors de l'appel d'une méthode, ouais? En C# .NET 4, vous pouvez définir named parameters lors de l'appel d'une méthode. Cela supprime le besoin d'entrer vos paramètres dans un ordre déterminé.
private void MyMethod(int width, int height){
// do stuff
}
//These are all the same:
MyMethod(10,12);
MyMethod(width: 10, height: 12);
MyMethod(heigh: 12, width: 12);
Ceci est une fonctionnalité très intéressante. il permet à votre code d'être plus tolérant aux changements d'ordre des paramètres ...
En plus de ce que les autres ont écrit: Le premier est une variable (locale) ou un champ, tandis que le dernier est le nom du paramètre de la méthode appelée. Dans le code:
private void MyFirstMethod(int myVar)
{
Console.WriteLine(myVar);
}
private void MySecondMethod(int myVar)
{
MyFirstMethod(myVar); // Call with the value of the parameter myVar
MyFirstMethod(myVar: myVar); // Same as before, but explicitly naming the parameter
MyFirstMethod(5); // Call with the value 5
MyFirstMethod(myVar: 5); // Same as before, but explicitly naming the parameter
}
et rend le code plus verbeux. Bien sûr, pour certaines personnes, plus la langue est sèche, mieux c'est, mais j'aime que le code soit aussi lisible que possible. –
Mais il le rend moins tolérant aux changements de nom de paramètre ... –
@Daniel Rose - Je préfère l'avoir moins tolérant pour nommer les changements. Si vous changez l'ordre de deux paramètres avec le même type ou des types compatibles, il compilera sans erreur, mais fonctionnera incorrectement. –