如果我想获取某个目录中所有文件的列表,我可以输入如下内容:
var files = (new DirectoryInfo(@"C:\Temp")).GetFiles();
但是,以下内容也有效(注意“new”关键字之前缺少括号):
var files = new DirectoryInfo(@"C:\Temp").GetFiles();
为什么允许这种情况发生?像这样的陈述:
2 + 4 * 3 and (2 + 4) * 3
由于括号,将分别解析为 14 和 18。
看起来我的代码示例类似于在 DirectoryInfo 对象的静态版本上调用“.GetFiles()”方法(因为缺少“new”关键字),其中括号与“new”关键字结合明确说明我正在使用 DirectoryInfo 对象的一个实例。
IE:
2 + 4 * 3
new DirectoryInfo() .GetFiles()
与:
(2 + 4 ) * 3
(new DirectoryInfo()) .GetFiles()
是否有一个简单的解释来解释为什么会这样?C# 词法分析器处理这两种情况(带/不带括号)不是更多的工作吗?我的比喻有问题吗?