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ということか。