You're creating an empty array. Which will always be empty, as you cannot change the capacity of the array instance (it just sounds weird to say you can't change its length, I don't know, why). Every time you do this, you create another instance of an array that can never be used. Doing this a lot may result in wasted GC and memory pressure, thus the warning.
Instead of creating empty arrays, just use Array.Empty<T>()
as it suggests. This method returns an array using this static class
internal static class EmptyArray<T>
{
public readonly static T[] Value;
static EmptyArray()
{
EmptyArray<T>.Value = new T[0];
}
}
Since it's static
and readonly
, there's only ever one instance of this empty array in the entire app domain. An empty array is essentially immutable, so caching the instance isn't a problem. And it allows you to forego special-casing empty array creation in your algorithms if you find yourself eyeballing an elegant code path that is creating tons of empty arrays.
Enumerable.Empty<T>()
is the Linq to Objects equivalent and is also useful for not wasting allocations for empty stuff.