Question: When creating an array, such as int[], does this inherit from anything? I thought it might inherit from System.Array, but after looking at the compiled CIL it does't appear so.

I thought it might inherit from System.Array or somehting similair, considering you can call methods and access properties on an array.

I.e.

```
int[] arr = {1, 2};
arr.Initialize();
arr.Length;

```

Answer: 
An array does inherit from `System.Array`. It's a specialisation of a generic type, kind of like `System.Array<int>`, except that the runtime treats arrays as "special" - they are a special case of generics that existed in .NET 1.0 before the "general" generics were introduced in .NET 2.0.

**Edit:** Just checked my answer using Reflection and it looks like the base type of an array actually is `System.Array`. Corrected.
One thing I found interesting is that arrays also implements `ICollection<>`

```
int[] foo = new int[]{ };
ICollection<int> bar = foo;

// So, arrays would have type infered to use ICollection<> overload
IEnumerable<T> Foo<T>(Func<IEnumerable<T>> bar); // .Count()
ICollection<T> Foo<T>(Func<ICollection<T>> bar); // .Count

```