多くの場合において、特定の場所で使用可能な型はただひとつのはずだ。しかしC#では、依然として型を明示的に指定する必要がある。今回、ターゲット型(Target-typed)'new’式の提案がC# 9で採用されたことにより、このようなボイラープレートコードは不要になる。

最初の文章に見覚えがあるとすれば、それは昨年1月に、この提案を取り上げているからだ。当時、ターゲット型’new’式のプロトタイプはC# 8の一部だった。結果的には採用されなかったが、開発作業は続けられていて、今回そのステータスが"Merged into 16.7p1"となったのだ。

この機能についてすでに知っているのであれば、全体的なデザインとしては何も変わっていない。事実、構文的には、2017年にC# 7.1で検討されて以来、まったく変更されていないのだ。初めて見るのであれば、基本的にはvarキーワードの反対である。変数宣言の型名を省略するのではなく、値を生成する側での型名を省略するのだ。例を2つ挙げる。

private Dictionary<string, List> field = new Dictionary<string, List>();
private Dictionary<string, List> field = new();

XmlReader.Create(reader, new XmlReaderSettings() { IgnoreWhitespace = true });
XmlReader.Create(reader, new() { IgnoreWhitespace = true });

#language design #.net #デベロップメント #ニュース

C# 9: newキーワードの型推論
2.70 GEEK