>>902
それは匿名型の話だね
そういう記述をするとまずコンパイラが自動的に次のようなクラスを生成する
internal sealed class _AnonymouseType0<Tファイル, Tパス> {
  private readonly Tファイル ファイル_field;
  private readonly Tパス パス_field;
  public _AnonymouseType0(Tファイル ファイル, Tパス パス){
    this.ファイル_field = ファイル;
    this.パス_field = パス;
  }
  public Tファイル ファイル{ get{ return this.ファイル_field; } }
  public Tパス パス{ get{ return this.パス_field; } }
}
そしてnew { ファイル = "aaa", パス = "bbb" } は
new _AnonymouseType0<string, string>("aaa", "bbb");
に置換される
つまり匿名型は変更不可能なクラスの定義とコンストラクタの呼び出しを代行してくれるってわけ

>>905
ifの条件に否定付け忘れてる