Я хочу передать массив настраиваемых объектов к функции типа String.Join
, которая имеет следующие подписи:
-
public static string Join(string separator, params Object[] values)
-
public static string Join(string separator, IEnumerable<T> values)
Если я вызываю функцию следующим образом:
var arr = new MyClass[]{ new MyClass(), new MyClass() };
string text = string.Join("\n", arr);
Я получаю ошибку компилятора:
Вызов неоднозначен между следующими методами или свойствами: 'string.Join(string, params object [])' и 'string.Join(string, System.Collections.Generic.IEnumerable)'
Я могу разрешить двусмысленность с помощью функции IEnumerable<T>
:
var arr = new MyClass[]{ new MyClass(), new MyClass() };
string text = string.Join<MyClass>("\n", arr);
Но можно ли вызвать функцию params object[]
? В критическом сценарии производительности было бы предпочтительнее обращаться к массиву напрямую, а не через счетчик.
Я использую С# 4.0, если это имеет значение.