Я знаю, что вы сказали, что не хотите оборачивать это и передавать как коллекцию, но есть два способа сделать это с минимальными хлопотами, поэтому я опубликую их на случай, если вы не знаете об этом .
Вы можете использовать params для вашего метода:
public void Average(params Point2[] points)
, после чего вы можете вызвать его с любым количеством аргументов или с массивом:
Average(P1);
Average(P2, P3, P4);
Average(); // this one becomes an empty array in the method
Point[] array = new Point[] { P1, P2, P3, P4 };
Average(array);
Или, альтернативно, вы можете использовать синтаксис короткого массива, чтобы обернуть ваш объект:
Average({ P1 }); // this is legal C# for making an array with 1 element
РЕДАКТИРОВАТЬ: После прочтения вашей заметки, я бы предположил, что массив params является самым ясным способом сделать то, что вы хотите. Единственный реальный недостаток в том, что вы не можете передать IEnumerable<Point2>
(или другие коллекции, например List<Point2>
) без первого вызова ToArray()
, потому что он принимает только фактические массивы.