如何避免在foreach体中进行空检查?

Ric*_*ngo -1 .net c# foreach null

如何避免foreach语句中的条件,但同时省略了可能的null元素的处理?

public class MyObject
{
    public int Value = 0;

    public MyObject(int value) : base()
    {
        Value = value;
    }
}

class Program
{
    static void Main(string[] args)
    {
        var list = new List<MyObject>()
        {
            new MyObject(1),
            new MyObject(2),
            null,
            new MyObject(4),
            new MyObject(5)
        };

        foreach (MyObject obj in list)
        {
            if (obj != null)
            {
                Console.WriteLine(obj.Value);
            }
        }

        list.ForEach(obj =>
        {
            if (obj != null)
            {
                Console.WriteLine(obj.Value);
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

Hos*_*Rad 8

您可以使用该OfType方法

foreach (MyObject obj in list.OfType<MyObject>())
Run Code Online (Sandbox Code Playgroud)