I have a method like:
AverageAndDoSomeMath (Point2)
and I wonder how to handle:
AverageAndDoSomeMath (Point2) // single AverageAndDoSomeMath (Point2 collection) // multiple
using a single implementation preferably.
For collection, I plan to use the IEnumerable type so I can pass any kind of collection, but for a single value, I don’t want to wrap and pass it as a collection, because the collection itself serves no purpose, other than to satisfy the type.
How to best handle it in the clearest, fastest, most efficient way?
EDIT: Maybe I should have chosen a better method name, but the method calculates the average of all the points, for 1 value it doesn’t make sense, but think of it as that the value will be used to say calculate another value, but what’s important is finding the average, so I can’t call the 1st method.
I know you said you didn’t want to wrap it and pass it as a collection, but there are two ways you can do this with minimal hassle, so I’ll post them in case you weren’t aware of one.
You could use params on your method:
after which you can call it with any number of arguments, or with an array:
Or alternately, you can use short array syntax to wrap up your object:
EDIT: After reading your note, I would suggest that a params array is the clearest way to do what you want. The only real downside to it is that you can’t pass in an
IEnumerable<Point2>(or other collections like aList<Point2>) without first callingToArray(), because it only takes actual arrays.