C#に慣れ親しんだ人からすると、この構造体に少々違和感があるかもしれない。フィールドがpublicで、書き換え可能(mutable)になっている。ガイドライン的に避けるべきとされてきた構造である。一般には以下のことが推奨されている。 (構造体に限らず)単純なデータの読み書きであってもプロパティにするべき 構造体は書き換え不能(immutable)に作るべき 先にいっておくと、別にガイドラインが変わったわけではなく、一般論としてはいまだこのガイドラインが正しい。しかし、C#の進歩によって問題が緩和された面もある。また、少ないながらガイドラインに沿わない方がよい場面もあり、ValueTuple構造体はまさにその例となる。 本稿では、このガイドラインや、ValueTuple構造体がこの構造を採用した背景について説明していく。 参照戻り値/参照ローカル変数 C# 7.0でタプルと同時に実装された機