将对象数组转换为 class 的列表

Convert an array of object to a list of a class

我有一组对象,例如:

object[]

数组的所有元素如果与我将调用的类型兼容

MyClass

如何将此对象[]转换为列表?

您可以使用 Linq 来实现:

using System;
using System.Linq;                  
public class Program
{
    public static void Main()
    {
        object[] l = new object[3];
        l[0] = new MyClass();
        l[1] = new MyClass();
        l[2] = new NotMyClass();
        var res = l.Where(e => e is MyClass).Cast<MyClass>();
        foreach(var e in res){
            Console.WriteLine(e.ToString());
        }
    }
}

public class MyClass{
}

public class NotMyClass{
    
}

您可以使用 LINQ 的 CastOfType 方法,具体取决于您在数组包含 类型的元素时希望发生的情况MyClass.

如果你想在遇到无效元素时抛出异常,使用:

var myList = myArray.Cast<MyClass>().ToList();

如果您想静默忽略所有不是 MyClass 的项目,请使用:

var myList = myArray.OfType<MyClass>().ToList();