73659


[Type-inferring a constant in C# - Stack
Overflow](https://stackoverflow.com/questions/2128432/type-inferring-a-
constant-in-c-sharp) を見ました。

なにやらたくさんの回答（意見？見解？）がありますが、どうやら `const`
を使った宣言を型推論させることによって、型を書く手間を省くことはできなさそうです。

`const`の他にもC#には、`readonly`や`static
readonly`があるようです（他にもあれば知りたいです）、このような再代入禁止のものに対して型推論させる構文は同様にしてないと考えてよいのでしょうか？

（`const`はコンパイル時にすでに領域を確保するという意味合いぽいので、代入って感じでもなさそうですが...）


CC BY-SA 4.0
2021-01-28T12:43:34.750
73656
2021-01-28T13:35:10.257
2021-01-28T12:50:11.160
9008
9008
question
c#
再代入不可のものに対して型推論できる書き方は存在しないんですか？


視点が違っています。

クラスメンバーとなるフィールドと関数内の変数とでは役割がことなります。そして、C#言語は再代入不可と関係なく、クラスメンバーについては型推論しない方針です。`readonly`や`static
readonly`はフィールド専用の修飾子ですので、この時点で型推論されません。  
`const`はもう一つ別の理由があります。`const`は数字、ブール値、文字列、null参照しか認められていません。推論する意味が薄いです。

* * *

> 型を書く手間を省くことはできなさそう

[C# 9.0でコンストラクタの型名を省略できる](https://docs.microsoft.com/ja-
jp/dotnet/csharp/whats-new/csharp-9#fit-and-finish-features)ようになりました。

[code]

    private List<WeatherObservation> _observations = new();
    
[/code]

これで少しは楽できるかと。


CC BY-SA 4.0
2021-01-28T13:35:10.257
73659
2021-01-28T13:35:10.257
4236
73656
answer