private static readonly

    private static readonly Point InvalidPosition = new Point(-1, -1);

というものが気になってしまった。

    private const Point InvalidPosition = new Point(-1, -1);

じゃないのかと。 しかしnewできるものはconst宣言できないというので、ははあ、ならば、

    private readonly Point InvalidPosition = new Point(-1, -1);

ではどうかと思ったのだが、宣言部分でreadonlyの値を初期化するにはstaticを付けなければならないらしい。 というわけで、private static readonlyになったというわけだ。 ふーん。readonlyならstaticで当たり前じゃんとか、 readonlyは基本public readonlyなんじゃねーの、とか、 いろいろどうでも良いことを考えてしまった。 この場合、宣言部分では

    private readonly Point InvalidPosition;

までにしておき、コンストラクタで

     InvalidPosition = new Point(-1,-1);

などと書けばエラーは起こらない。しかしこのケースは宣言部分で

        private Point exit = InvalidPosition;
        private static readonly Point InvalidPosition = new Point(-1,-1);

となっていたので、やはりstaticが必要だった。この場合、どうしてもstaticを付けたくなければ exitもInvalidPositionもどちらもコンストラクタで初期化してやればよい。 なんかひたすらどうでも良いことをうだうだと。

なるほど。 public const はほんとに普遍の定数以外は使わないようにすると。 private constならOKということか。