.NETラボ 2021年11月登壇振り返り

タイトル

www.slideshare.net

.NET ラボ2021年11月に「.NET 6の期待の新機能とアップデート」というタイトルで登壇してきました。

dotnetlab.connpass.com

Linqのメソッド追加

 

これまで数々のセッションで.NET6についての紹介があったかと思いますが、他であまり触れられて来なかったアップデートとしてはLinqのメソッド追加です。

  • DistinctBy
  • UnionBy
  • IntersectBy
  • ExceptBy
  • MaxBy
  • MinBy

といったメソッドが追加になっています。

devblogs.microsoft.com

github.com

特に、MaxBy、MinByといったあたりは使用するケースが多くこれまでソートして先頭の要素を取り出していたのですが.NET6からは1発でできるようになり非常に便利になりました。

 

var people = new (string Name, int Age)[] { ("Francis", 20), ("Lindsey", 30), ("Ashley", 40) };
people.MaxBy(person => person.Age); // ("Ashley", 40)

文字列補完の高速化

文字列補完は特にログ出力などに多く使われているかと思いますが、String.Format()と比べ表記が見やすく可読性に優れているといえます。

従来の実装ですと、文字列補完はString.Formatと同等処理となります。今回、.NET6では新たにDefaultInterplatedStringHandler構造体を実装しコンパイラがこれに当てはまると判断したものについてはこの構造体で展開されていくこととなります。

これにより高速化が実現されています。

手元の実計測によりますと、ほぼStringBuilderと同等レベルの速度が出ています。

文字列補完の高速化計測結果

文字列補完の高速化計測結果

このことから、より積極的に文字列補完を使用していくべきと考えられます。