class A : IFoo
{
}
...
A[] arrayOfA = new A[10];
if(arrayOfA is IFoo[])
{
// this is not called
}
Q1:为什么arrayOfA
不是一个阵列IFoos
?
Q2:为什么我不能投arrayOfA
来IFoo[]
?
发布于 2019-05-20 10:13:39
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:\>
发布于 2019-05-20 10:25:38
你可以试试
if (arrayofA[0] is IFoo) {.....}
哪种回答你的问题。arrayOfA
是一个数组。阵列是一个实现一个目的ICloneable
,IList
,ICollection
,和IEnumerable
。IFoo
不属于他们。
https://stackoverflow.com/questions/-100001152
复制相似问题