Monday 25 December 2017

c# - AddRange to a Collection

itemprop="text">


A coworker asked me today
how to add a range to a collection. He has a class that inherits from
Collection. There's a get-only property of that type
that already contains some items. He wants to add the items in another collection to the
property collection. How can he do so in a C#3-friendly fashion? (Note the
constraint about the get-only property, which prevents solutions like doing Union and
reassigning.)



Sure, a foreach with
Property. Add will work. But a List-style AddRange
would be far more elegant.



It's easy enough to
write an extension method:



public
static class CollectionHelpers
{
public static void
AddRange(this ICollection destination,
IEnumerable
source)

{
foreach (T item in source)

{
destination.Add(item);
}

}
}


But I
have the feeling I'm reinventing the wheel. I didn't find anything similar in
System.Linq or rel="noreferrer">morelinq.




Bad
design? Just Call Add? Missing the obvious?


class="post-text" itemprop="text">
class="normal">Answer



No, this
seems perfectly reasonable. There is a List. href="http://msdn.microsoft.com/en-us/library/z883w3dc.aspx"
rel="noreferrer">AddRange() method that basically does just this, but
requires your collection to be a concrete
List.


No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...