ブログ 2018/12/10 C# 8.0 パターン マッチング 今日はパターン マッチングの話。 昨日のswitch式に引き続き、 真っ先に実装されてそうなものなのに Preview 1 には入っていなかったやつ。 というか、switch式自体、このパターン マッチングの一部として提案されているものです。 パターン マッチング “完全版” パターン マッチングは、元々は C# 7.0 で検討されていたものの、 結局、一部分だけが C# 7.0 に入り、複雑なものは C# 8.0 に回りました。 パターン C# のバージョン … 続きを読む 2018/12/09 C# 8.0 switch 式 今日は switch 式の話。 ステートメントではなく、式。 var y = x switch { ... } みたいに書ける構文です。 C# 8.0 候補の中でも割と早い段階に実装されていて、 「the patterns and ranges preview」とかいってPreview 公開もされていました。 (後述するように、switch式は「patterns」のおまけです。) なのでてっきり、Visual Studio 2019 Preview でもまず真っ先に入ると思っていたん… 続きを読む 2018/12/08 C# 8.0 null許容参照型 今日も C# 8.0 の新機能の話。 C# 8.0 の中でおそらく一番の目玉機能扱いになると思われる null許容参照型の話です。 参照型でもそのままでは null を認めない 要は、参照型に対しても、単にTと書くとnullを認めない型になり、 null許容にしたければT?と書くようにするという機能です。 #nullable enable // string には null が来ない // null が来ないなら s.Length で OK static int… 続きを読む 2018/12/07 C# 8.0 Ranges 今日もC# 8.0の新機能の話で、今日のはすでに Visual Studio 2019 Preview 1に入っているやつです。 Ranges and Indicesと呼ばれていて、配列などに対して、 a[^i]で「後ろからi番目」とか、 a[i..j]で「i番目からj番目の範囲」とかを取り出せるようにする機能です。 正確にいうと、^iとかi..jとかの部分がC#の新機能で、 これらはそれぞれIndex型、Range型になります。 Index、Rangeを受け取るインデクサーやメソッ… 続きを読む 2018/12/06 C# 8.0 小さな修正 Visual Studio 2019 Preview 1 が出て、 さすがに C# 8.0 に入る機能・入らない機能がある程度見えてきたので、 今日からしばらくその辺りの紹介をしていこうかと。 とりあえず今日は、「1記事使うほどでもないような小さい奴」をまとめて紹介。 文字列補完、$ と @ の順序緩和 ??= (null 合体代入)演算子 構造体の宣言時、refとpartialの順序緩和 分解の右辺に default 式 入れ子の{}内での stackalloc unma… 続きを読む 新しい投稿へ 過去の投稿へ
2018/12/10 C# 8.0 パターン マッチング 今日はパターン マッチングの話。 昨日のswitch式に引き続き、 真っ先に実装されてそうなものなのに Preview 1 には入っていなかったやつ。 というか、switch式自体、このパターン マッチングの一部として提案されているものです。 パターン マッチング “完全版” パターン マッチングは、元々は C# 7.0 で検討されていたものの、 結局、一部分だけが C# 7.0 に入り、複雑なものは C# 8.0 に回りました。 パターン C# のバージョン … 続きを読む
2018/12/09 C# 8.0 switch 式 今日は switch 式の話。 ステートメントではなく、式。 var y = x switch { ... } みたいに書ける構文です。 C# 8.0 候補の中でも割と早い段階に実装されていて、 「the patterns and ranges preview」とかいってPreview 公開もされていました。 (後述するように、switch式は「patterns」のおまけです。) なのでてっきり、Visual Studio 2019 Preview でもまず真っ先に入ると思っていたん… 続きを読む
2018/12/08 C# 8.0 null許容参照型 今日も C# 8.0 の新機能の話。 C# 8.0 の中でおそらく一番の目玉機能扱いになると思われる null許容参照型の話です。 参照型でもそのままでは null を認めない 要は、参照型に対しても、単にTと書くとnullを認めない型になり、 null許容にしたければT?と書くようにするという機能です。 #nullable enable // string には null が来ない // null が来ないなら s.Length で OK static int… 続きを読む
2018/12/07 C# 8.0 Ranges 今日もC# 8.0の新機能の話で、今日のはすでに Visual Studio 2019 Preview 1に入っているやつです。 Ranges and Indicesと呼ばれていて、配列などに対して、 a[^i]で「後ろからi番目」とか、 a[i..j]で「i番目からj番目の範囲」とかを取り出せるようにする機能です。 正確にいうと、^iとかi..jとかの部分がC#の新機能で、 これらはそれぞれIndex型、Range型になります。 Index、Rangeを受け取るインデクサーやメソッ… 続きを読む
2018/12/06 C# 8.0 小さな修正 Visual Studio 2019 Preview 1 が出て、 さすがに C# 8.0 に入る機能・入らない機能がある程度見えてきたので、 今日からしばらくその辺りの紹介をしていこうかと。 とりあえず今日は、「1記事使うほどでもないような小さい奴」をまとめて紹介。 文字列補完、$ と @ の順序緩和 ??= (null 合体代入)演算子 構造体の宣言時、refとpartialの順序緩和 分解の右辺に default 式 入れ子の{}内での stackalloc unma… 続きを読む