Wouldn’t it be nice if you could test wether an element is contained in an array by using a Contains method just like the one available on List objects? Wouldn’t it be good if you could write code like this?
string[] stuff = ....;
if (stuff.Contains(“item”))
{
...
}
In .NET 3.5 this is possible out of the box (make sure you reference System.Core and include the System.Linq namespace) but if you try to run this code in .NET 2.0 or .NET 3.0 you will get errors. Nevertheless the .NET Framework 2.0 does provide a Contains() method on any Array object.
In the .NET Framework
2.0, System.
Array implements the System.Collections.Generic.
IList<T> interface. Unfortunately the implementation of the IList interface is provided at runtime so we do not see the methods in Visual Studio and we cannot write array.Contains().
Instead we have to cast the array to the appropriate IList interface:
string[] almostKilledToExtinction = new string[] { “Blue Whale”, “Snow Leopard”, “Giant Panda” };
if (!((IList<string>)almostKilledToExtinction).Contains(“Humans”))
{
System.Console.WriteLine(“phew!”);
}
System.Console.ReadLine();
The documentation explains it as follows:
In the .NET Framework version 2.0, the Array class implements the System.Collections.Generic.IList, System.Collections.Generic.ICollection, and System.Collections.Generic.IEnumerable generic interfaces. The implementations are provided to arrays at run time, and therefore are not visible to the documentation build tools. As a result, the generic interfaces do not appear in the declaration syntax for the Array class, and there are no reference topics for interface members that are accessible only by casting an array to the generic interface type (explicit interface implementations). The key thing to be aware of when you cast an array to one of these interfaces is that members which add, insert, or remove elements throw NotSupportedException.
taken from:
System.Array So the next time you can save yourself writing (unnecessary) code like this:
bool found =false;
foreach (string s in array)
{
if (s.Equals(“item”))
{
found =true;
break;
}
}
if (found)
{
or this
List<string> list = new List<string>(array);
if (list.Contains(“item”))
{
...