C# (args是{Length:>0})和args.Length之间的差异?

C# (args是{Length:>0})和args.Length之间的差异?,c#,.net,runtime,C#,.net,Runtime,我在dotnet运行时中浏览了一些代码,我注意到没有编写这样的代码: 如果参数长度>0 他们使用这个: 如果args为{Length:>0} 你知道用第二种方法代替第一种方法有什么好处吗?看起来较长且不易阅读,但出于某种原因,使用了第二种方法?如果args为null,则args.Length>0会引发null引用异常 在相同的情况下,args is{Length:>0}的计算结果为false。您在运行时的何处看到此代码?看起来这是在C8建议中,他们称之为matching@DavidG我在这里看到

我在dotnet运行时中浏览了一些代码,我注意到没有编写这样的代码:

如果参数长度>0

他们使用这个:

如果args为{Length:>0}

你知道用第二种方法代替第一种方法有什么好处吗?看起来较长且不易阅读,但出于某种原因,使用了第二种方法?

如果args为null,则args.Length>0会引发null引用异常


在相同的情况下,args is{Length:>0}的计算结果为false。

您在运行时的何处看到此代码?看起来这是在C8建议中,他们称之为matching@DavidG我在这里看到:@Jonesopolis它是属性模式的组合{Length:…}从c8和C9Relational patterns>0,我想您可以这样做:args?.Length>0?您可以这样做,但是代码维护人员可能会认为args is{Length:>0}更可读,或者允许简单地添加更多条件,而不仅仅是长度>0。