Passage de tableau à une fonction qui prend soit params object[] ou IEnumerable<T>

Je veux passer un tableau d'objets personnalisés pour une fonction comme String.Join qui a les signatures suivantes:

  • public static string Join(string separator, params Object[] values)
  • public static string Join(string separator, IEnumerable<T> values)

Si j'appelle la fonction comme ceci:

var arr = new MyClass[]{ new MyClass(), new MyClass() };
string text = string.Join("\n", arr);

J'obtiens une erreur de compilateur:

L'appel est ambigu entre les méthodes suivantes ou propriétés: 'string.Join(string, params object []) " et " chaîne de caractères.Join(chaîne, Système.Les Collections.Génériques.IEnumerable)'

Je peux résoudre l'ambiguïté en utilisant le IEnumerable<T> fonction:

var arr = new MyClass[]{ new MyClass(), new MyClass() };
string text = string.Join<MyClass>("\n", arr);

Mais puis-je appeler la params object[] fonction? Dans une critique pour les performances scénario, il serait préférable pour accéder au tableau directement, plutôt que par l'intermédiaire d'un agent recenseur.

Je suis à l'aide de C# 4.0, si cela fait une différence.

OriginalL'auteur bouvierr | 2013-04-10