Code:
namespace ConsoleApplication1
{
    class ImplicitlyConvertibleFromFoo
    {
        public ImplicitlyConvertibleFromFoo(Foo foo)
        {
            this.foo = foo;
        }
        Foo foo;
    }
    class Foo
    {
        public static implicit operator ImplicitlyConvertibleFromFoo(Foo foo)
        {
            return new ImplicitlyConvertibleFromFoo(foo);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Foo[] fooArray = new Foo[4];
            for(int i=0;i<fooArray.Length;++i)
            {
                fooArray[i] = new Foo();
            }
            ImplicitlyConvertibleFromFoo implicitlyConverted = fooArray[0];
            // this is fine

            ImplicitlyConvertibleFromFoo[] castArray = fooArray.Cast<ImplicitlyConvertibleFromFoo>().ToArray();
// above generates exception: An unhandled exception of type 'System.InvalidCastException' occurred in System.Core.dll

//Additional information: Unable to cast object of type 'ConsoleApplication1.Foo' to type 'ConsoleApplication1.ImplicitlyConvertibleFromFoo'.
        }
    }
}
does anyone know a way to easily convert arrays of user-defined types?