class A : IFoo
{
}
...
A[] arrayOfA = new A[10];
if(arrayOfA is IFoo[])
{
// this is not called
}
Q1:为什么arrayOfA
不是IFoos
的数组?
Q2:为什么我不能将arrayOfA
投射到IFoo[]
?
答案 0 :(得分:6)
arrayOfA
IFoo[]
。
您的计划肯定存在其他问题。
您似乎已经模拟了一些代码来显示问题,但事实上您的代码(见下文)可以按预期工作。尝试使用真实代码更新此问题 - 或尽可能接近真实 - 我们可以再看看。
using System;
public class oink {
public static void Main() {
A[] aOa = new A[10];
if (aOa is IFoo[]) { Console.WriteLine("aOa is IFoo[]"); }
}
public interface IFoo {}
public class A : IFoo {}
}
PS D:\> csc test.cs
Microsoft (R) Visual C# 2008 Compiler version 3.5.30729.1
for Microsoft (R) .NET Framework version 3.5
Copyright (C) Microsoft Corporation. All rights reserved.
PS D:\> D:\test.exe
aOa is IFoo[]
PS D:\>
答案 1 :(得分:-3)
你可以尝试
if (arrayofA[0] is IFoo) {.....}
哪种回答你的问题。 arrayOfA
是一个数组。数组是实现ICloneable
,IList
,ICollection
和&的对象。 IEnumerable
。 IFoo
不在其中。