Si j'ai une fonctiontableaux Passing à l'argument de longueur variable des listes
void Foo(params int[] bar){}
Ce qui suit fonctionne très bien:
int[] a1 = {1, 2, 3};
int[] a2 = {4, 5, 6};
Foo(1, 2, 3);
Foo(a1);
Mais ceux-ci donnent des erreurs de compilation:
Foo(a1, 1, 2, 3);
Foo(1, 2, a1);
Foo(1, a1, 2);
Foo(a1, a2, 1, 2, 3);
, car seule la le premier argument est autorisé à être un int [], le reste doit être ints.
Le dernier exemple est ce que je voudrais faire, mais le langage ne me laissera pas sans combiner les tableaux en premier. J'aime beaucoup la simplicité de la syntaxe, et je préfère ne pas ajouter au code plus que je ne le dois. Est-ce que quelqu'un a un bon moyen de le faire?
Qu'est-ce qui vous pensez 'Foo (a1, 1, 2, 3),' 'où a1' est un' int [] 'devrait fonctionner? L'avez-vous testé? Sur quelle version du compilateur? –
Êtes-vous sûr que 'Foo (a1, 1, 2, 3)' fonctionne et qu'il appelle la même surcharge que 'Foo (1,2,3)'? J'ai testé sur .net 3.5 SP1 et ça ne marche pas pour moi. –
Assez juste. Visual studio me laisse taper sans avertissement, mais pas les autres. Ils échouent tous à la compilation. Je vais éditer. – captncraig