C# 为空检查优化if和foreach

C# 为空检查优化if和foreach,c#,asp.net,.net,c#-4.0,C#,Asp.net,.net,C# 4.0,是否要优化此代码以进行空检查 if (objA != null && objA .Length > 0) { foreach (var child in objA ) { if (child.Any != null) { foreach (var a in ch

是否要优化此代码以进行空检查

if (objA != null && objA .Length > 0)
            {
                foreach (var child in objA )
                {
                    if (child.Any != null)
                    {
                        foreach (var a in child.Any)
                        {
                            if (a.Name.ToLower() == "code")
                            {
                                //some code
                            }
                        }
                    }
                }
            }

我想您应该使用C#6空条件
运算符。以下是一些psuedo代码:

for (int i = 0; i < objA?.Length; i++)
{
    ExecuteCode(objA[i]?.Any);
}    
for(int i=0;i

static void ExecuteCode(YourTypeHere[]子项)
{
for(int i=0;i

使用for循环比使用foreach快:。两个循环都比Linq稍快。

您可以安全地丢失
objA.Length>0
,因为
foreach
循环将有效地复制它。没有看到任何其他内容。@glenebob:好的,确定什么类型的
objA
?请向我们展示您的
Any
属性的定义。@mjwills:objA是一个objectA数组。
foreach(objA?中的变量a)。SelectMany(z=>z?.Any)。其中(y=>y?.Name?.ToLower()==“code”)?Enumerable.Empty()
可能会起作用。
static void ExecuteCode(YourTypeHere[] children)
{
    for (int i = 0; i < children?.Length; i++)
    {
        if (children[i]?.Name?.ToLower() == "code")
        {
            //some code
        }
    }
}