IList
In C# lists and arrays implement IList
. This interface
is an abstraction that allows list types to be used with through a single reference.
With IList
, we can create a single method to receive an int
array, or a List
of ints. This is powerful—it allows us to combine and reuse code.
With IList
, you must specify a type parameter. If you want your method to act upon ints, you can use IList
int
. Any type (string
, object) can be specified.
IList
int
parameter.Count
property and then uses the enumerator in a foreach
-loop.int[]
or a List
int
to the Display method. These are implicitly cast to their base interface
IList
int
.IList
T. The List
type also implements IList
T.using System; using System.Collections.Generic; class Program { static void Main() { int[] array = new int[3]; array[0] = 1; array[1] = 2; array[2] = 3; Display(array); List<int> list = new List<int>(); list.Add(5); list.Add(7); list.Add(9); Display(list); } static void Display(IList<int> list) { Console.WriteLine("Count: {0}", list.Count); foreach (int value in list) { Console.WriteLine(value); } } }Count: 3 1 2 3 Count: 3 5 7 9
IEnumerable
useConsider this alternative program—it uses IEnumerable
instead of IList
. With IEnumerable
we do not have a Count
property.
Count()
extension method from LINQ on an IEnumerable
. This will return the same value.using System; using System.Collections.Generic; class Program { static void Main() { Display(new int[] {1, 2}); Display(new List<int>() {1, 2}); } static void Display(IEnumerable<int> list) { foreach (int value in list) { Console.WriteLine(value); } } }1 2 1 2
You can also implement IList
T for a custom class
. The methods required are an indexer, the IndexOf
method, the Insert
method, and the RemoveAt
method.
We looked at the IList
generic interface
, which can be used as an abstraction for arrays and Lists. The IList
generic interface
is separate from the regular IList
interface
.