Cached empty collections I often need to return empty collections.
One of those days I wrote the following to return a cached instance:

public static class Array&lt;T&gt;
{
    // As a static field, it gets created only once for every type.
    public static readonly T[] Empty = new T[0];
}


I didn't know about Enumerable&lt;T&gt;.Empty() maybe it didn't exist back then. Although I know now, I still use this one.

There are still many functions in BCL that need an array instead of IEnumerable&lt;T&gt;, IList&lt;T&gt; or IReadOnlyList&lt;T&gt;. And array implements all of these so it can be used anywhere.

// All these variables share the same array's reference.
string[]            empty1 = Array&lt;string&gt;.Empty;
IEnumerable         empty2 = Array&lt;string&gt;.Empty;
IEnumerable&lt;string&gt; empty3 = Array&lt;string&gt;.Empty;


What do you think about this class?
Can you see any other advantages/disadvantages of it over Enumerable&lt;T&gt;.Empty()?  

And about implementation:
Do you think making the caching using a static field would cause any problem?



Edit: Array class now has a static, generic Empty method, essentially deprecating this implementation.
Your solution is absolutely correct and practical. 

In fact Enumerable.Empty&lt;T&gt; also returns empty array under the hood, just slightly in a different way (they have a separate instance holder class that is lazily initialized).