将泛型类型参数转换为数组

Wat*_* v2 4 c# c#-4.0

如果我知道某个泛型类型参数是一个数组,我该如何将它转换为数组,或者IEnumerable我可以看到它的项目?例如

public class Foo<T>
{
  public T Value { get; set; }

  public void Print()
  {
    if (Value.GetType().IsArray)
      foreach (var item in Value /*How do I cast this to Array or IEnumerable*/)
        Console.WriteLine(item);
  }
}
Run Code Online (Sandbox Code Playgroud)

Yuc*_*uck 8

尝试这样的事情:

public void Print()
{
    var array = Value as Array;
    if (array != null)
        foreach (var item in array)
            Console.WriteLine(item);
}
Run Code Online (Sandbox Code Playgroud)

关键字:

as运算符就像一个强制转换操作.但是,如果无法进行转换,则返回null而不是引发异常.

  • 这个,但我会使用`IEnumerable`而不是`Array` (4认同)