<pre><code>class A : IFoo
{
}

...

A[] arrayOfA = new A[10];

if(arrayOfA is IFoo[]) 
{
    // this is not called
}
</code></pre>

<p>Q1: Why is <code>arrayOfA</code> not an array of <code>IFoos</code>?</p>

<p>Q2: Why can't I cast <code>arrayOfA</code> to <code>IFoo[]</code>?</p>

You could try
```
```
if (arrayofA[0] is IFoo) {.....}
```
```
which sort of answers your question.
```
arrayOfA
```
is an array. An array is an object which implements
```
ICloneable
```
,
```
IList
```
,
```
ICollection
```
, &
```
IEnumerable
```
.
```
IFoo
```
isn't among them.