rksoftware

Visual Studio とか C# とかが好きです

foreach で index。 for Mac (C# 7)

先日、素晴らしい記事を読んで早速実践導入してみました。

Visual Studio で書いてとてもシンプルにかけて満足していたら...
もくもく会で VS for Mac でエラーになると教えていただきました。
※もくもく会

こんな感じ。
f:id:rksoftware:20180115001826j:plain

Error CS8306: Tuple element name 'xxx' is inferred. Please use language version 7.1 or greater to access an element by its inferred name. (CS8306)

■ 対応方法

・C# 7.1 を使えるようにする
最近の C# はマイナーバージョンがあり、最新のマイナーバージョンは設定をしないと使えません。
プロジェクトのプロパティ > ビルド > 全般 > 言語オプション > C# 言語バージョン
バージョン 7.1 を選択します。
f:id:rksoftware:20180115001847j:plain

■ あきらめる

中には、プロジェクトの設定を変更することが困難な現場の方もいるでしょう。
そういった場合は、素直にレガシーな実装方法にしておくのが無難かもしれません。

foreach (var m in new[] { 1, 2, 3 }.Select((s, i) => new { s, i }))
    Console.WriteLine($"{m.s} {m.i}");

こんな感じに。

とりあえず、おすすめは C# 7.1 を使えるようにする方です。