質問: Type-inferring a constant in C# - Stack Overflow を見ました。 なにやらたくさんの回答(意見?見解?)がありますが、どうやら `const` を使った宣言を型推論させることによって、型を書く手間を省くことはできなさそうです。 `const`の他にもC#には、`readonly`や`static readonly`があるようです(他にもあれば知りたいです)、このような再代入禁止のものに対して型推論させる構文は同様にしてないと考えてよいのでしょうか? (`const`はコンパイル時にすでに領域を確保するという意味合いぽいので、代入って感じでもなさそうですが...)
回答: 視点が違っています。 クラスメンバーとなるフィールドと関数内の変数とでは役割がことなります。そして、C#言語は再代入不可と関係なく、クラスメンバーについては型推論しない方針です。`readonly`や`static readonly`はフィールド専用の修飾子ですので、この時点で型推論されません。 `const`はもう一つ別の理由があります。`const`は数字、ブール値、文字列、null参照しか認められていません。推論する意味が薄いです。 > > 型を書く手間を省くことはできなさそう > > > C# 9.0でコンストラクタの型名を省略できるようになりました。 ``` private List _observations = new(); ``` これで少しは楽できるかと。