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
}
}
}