Est-il possible d'avoir des arguments nommés comme en perl/pythonEst-ce que C# 2.0-3.0 prend en charge les arguments nommés pour les méthodes?
par exemple
object.method(arg1 => value1, arg2 => value2, arg3 => 0);
en C# avant 4.0 C#?
Est-il possible d'avoir des arguments nommés comme en perl/pythonEst-ce que C# 2.0-3.0 prend en charge les arguments nommés pour les méthodes?
par exemple
object.method(arg1 => value1, arg2 => value2, arg3 => 0);
en C# avant 4.0 C#?
Les arguments nommés sont des entités C# 4.0. (Vous ne pouvez pas avoir de paramètres optionnels de méthode en C# < 4.0)
Ce n'est pas possible avant C# 4.0.
BTW, il n'y a pas de C# 2.5.
Bien qu'il ne s'agisse pas d'une correspondance exacte pour les arguments nommés, il existe quelque chose dans C# 3.0 pour les constructeurs similaire appelé "object initializers" qui vous permet de définir des valeurs pour les propriétés publiques lorsque vous utilisez l'opérateur new
. Cela vous permet de faire des trucs comme ça:
Person p = new Person()
{
FirstName = "John",
LastName = "Doe",
Address = new Address()
{
Street = "1234 St.",
City = "Phoenix"
}
};
Maintenant, afin d'utiliser ce que vous avez invoquer l'opérateur new
(donc il ne fonctionnera pas pour les méthodes) et les propriétés que vous définissez besoin d'avoir le même accès qu'ils devraient vous permettre de le faire:
Person p = new Person();
p.FirstName = "John";
p.LastName = "Doe";
Address a = new Address();
a.Street = "1234 St.";
a.City = "Phoenix";
p.Address = a;
donc, ce ne vous laissera pas contourner public get
mais protected set
propriétés (vous ne pouvez pas faire une seule propriété initialisé par cette méthode). Cela peut rendre votre code plus lisible, mais pas dans la mesure où les arguments nommés peuvent le faire.
Il y a un C# 2.5? Était-ce censé être 3.5? –
@ C.Ross - vous voulez dire C# 3.0? –
.NET 3.5, C# 3.0 ..., il est communément appelé "C# 3.5" –