特定のディレクトリ内のすべてのファイルのリストを取得したい場合は、次のように入力できます。
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オブジェクトのインスタンスを使用していることを明示します。
すなわち:
2 + 4 * 3
new DirectoryInfo() .GetFiles()
vs:
(2 + 4 ) * 3
(new DirectoryInfo()) .GetFiles()
これが事実である理由の簡単な説明はありますか?C#レクサーが両方のケース(括弧付き/なし)を処理するのはもっと手間がかかりませんか?私のアナロジーには欠陥がありますか?