HomeSearch

C# Enumerable.Empty: Get IEnumerable With No Elements

This C# example program uses the Empty method on the Enumerable type. It requires System.Linq.

Enumerable.Empty

generates an IEnumerable of zero elements. It can be used when you want to avoid a query expression and instead just want to use an empty sequence. It can help when you want to return no values.

Example.

Empty is a static generic method. We must specify the type of the sequence we want to generate. Here Enumerable.Empty(int) will return a zero-element sequence of ints (IEnumerable(int)).Int, uint

So: The Count() extension indicates the sequence is empty. If you use ToArray, you will get an empty array.

Count
C# program that uses Enumerable.Empty using System; using System.Linq; class Program { static void Main() { var empty = Enumerable.Empty<int>(); Console.WriteLine(empty.Count()); int[] array = empty.ToArray(); Console.WriteLine(array.Length); } } Output 0 0

When to use it.

Enumerable.Empty helps when you want to call a method that receives an IEnumerable collection. In some calling locations, you could pass a query expression. In others, you could simply pass Enumerable.Empty.

Implementation.

The implementation of Empty is interesting. It uses a static generic type and then calls a property (Instance) on that type. An empty array is lazily initialized in the Instance property.StaticGeneric Class, Method

Tip: Because Enumerable.Empty caches the zero-element array, it can provide a slight performance advantage in some programs.

Summary.

Enumerable.Empty provides a useful bit of functionality for IEnumerable collections. With an internal element cache, it can avoid allocations. It can be used as an argument to any method that receives an IEnumerable generic type.
Home
Dot Net Perls
© 2007-2019 Sam Allen. All rights reserved. Written by Sam Allen, info@dotnetperls.com.