C# 7.1のTupleが賢くなった

まわりに使う人がほとんどいなかったので、なるべく使わないようにしていたTupleクラス。Key-Valueの関係ではないのでDictionaryではないけど、とりあえず一時的にひとまとめにしたいときにすごく重宝する。だけどもItem1とかItem2という面白みのない要素名にはもうちょっとなんとかならないかとおもっていた。

これがC# 7.1で見事に解決していた。Tupleを構築するときの変数名がそのまま要素名になる。

C# 7.0以前

var name = "mckuraw";
var age = 100;
var t = new Tuple<string, int>(name, age);

Console.WriteLine($"Name:{t.Item1},Age:{t.Item2}");

これが、

C# 7.1以降

var name = "mckuraw";
var age = 100;
var t71 = (name, age);

Console.WriteLine($"Name:{t71.name},Age:{t71.age}");

こう書けるようになった。これでまわりの人にTupleクラスを勧めても「このItem1ってなに?」って言われなくなる(はず)。