ブログ 2022/01/07 【C# 11 候補】defaultable value type ImmutableArray に対してコレクション初期化子は使えないという話でちょっと出しましたが、この問題の原因の1つは「既定値(default、0初期化)のまま放置してはいけない型がある」というものです。 default 放置問題は「null を null のまま放置してはいけない」という問題に直結するので、 null 許容参照型とも関連します。 ということで「クラスの null 解析と同様に、構造体の default に関するフロー解析を行う」という提案が前々からあるんですが。 状… 続きを読む 2022/01/04 【C# 11 で再検討】Countable リスト パターンの実装で、「Count もしくは Length を持った型なら何にでも使える」と説明しました。 C# ではこれを「Countable」と呼んでいます。 この Countable というコンセプト、最初に出て来たのは C# 8.0 の Index のときです。 で、リスト パターンやコレクション リテラルでも Countable が出て来たところで、 Index に対する Countable の扱いも拡張しよう見たいな話がちょこっと出ています。 ちょっと課題もあるので C… 続きを読む 2021/12/31 【C# 11 候補】コレクション リテラル 今日はリスト パターンの回でちょこっと出て来た [] リテラルの話。 逆に、リスト パターン側でも {} ではなく [] を使う決断に至った理由でもあります。 もう実装があるリスト パターンと違って、こちらはまだ案が出たてで、 もしかしたら C# 11 よりもさらに後になるかもしれないです。 [] リテラルの導入 元々、C# よりも後に世に出たり、大幅改修したことがあるプログラミング言語には結構「コレクション リテラル」系の文法があります。 で、多くの場合、[ 1, 2, 3 ] み… 続きを読む 2021/12/30 ImmutableArray に対してコレクション初期化子 Immutable コレクションは現状いろんな使いにくさがあって悪名高いわけですが。 今日は「リスト パターンの回に出した [] リテラルの話」と絡むので、特に ImmutableArray とかに対してコレクション初期化子が使えないという話をします。 クイズ 以下のようなコード。 using System.Collections.Immutable; ImmutableArray<int> a = new() { 1, 2 }; foreach (var x… 続きを読む 2021/12/29 【C# 11 候補】リスト パターン【VS 17.1 p2 で追加予定】 C# にパターンがまた1個増えます。 今回はリスト。is [..] とかで配列や List<T> にマッチ。 これをリスト パターンと言います。 Roslyn 化(C# コンパイラーを C# で書き直し)した初期の頃から、C# の進化の長期テーマになってる "Programming With Data" の続きです。 以下の表の赤丸を付けたところ。 ちなみにこのリスト パターンは Visual Studio 17.1 Preview 2 向けですでに… 続きを読む 新しい投稿へ 過去の投稿へ
2022/01/07 【C# 11 候補】defaultable value type ImmutableArray に対してコレクション初期化子は使えないという話でちょっと出しましたが、この問題の原因の1つは「既定値(default、0初期化)のまま放置してはいけない型がある」というものです。 default 放置問題は「null を null のまま放置してはいけない」という問題に直結するので、 null 許容参照型とも関連します。 ということで「クラスの null 解析と同様に、構造体の default に関するフロー解析を行う」という提案が前々からあるんですが。 状… 続きを読む
2022/01/04 【C# 11 で再検討】Countable リスト パターンの実装で、「Count もしくは Length を持った型なら何にでも使える」と説明しました。 C# ではこれを「Countable」と呼んでいます。 この Countable というコンセプト、最初に出て来たのは C# 8.0 の Index のときです。 で、リスト パターンやコレクション リテラルでも Countable が出て来たところで、 Index に対する Countable の扱いも拡張しよう見たいな話がちょこっと出ています。 ちょっと課題もあるので C… 続きを読む
2021/12/31 【C# 11 候補】コレクション リテラル 今日はリスト パターンの回でちょこっと出て来た [] リテラルの話。 逆に、リスト パターン側でも {} ではなく [] を使う決断に至った理由でもあります。 もう実装があるリスト パターンと違って、こちらはまだ案が出たてで、 もしかしたら C# 11 よりもさらに後になるかもしれないです。 [] リテラルの導入 元々、C# よりも後に世に出たり、大幅改修したことがあるプログラミング言語には結構「コレクション リテラル」系の文法があります。 で、多くの場合、[ 1, 2, 3 ] み… 続きを読む
2021/12/30 ImmutableArray に対してコレクション初期化子 Immutable コレクションは現状いろんな使いにくさがあって悪名高いわけですが。 今日は「リスト パターンの回に出した [] リテラルの話」と絡むので、特に ImmutableArray とかに対してコレクション初期化子が使えないという話をします。 クイズ 以下のようなコード。 using System.Collections.Immutable; ImmutableArray<int> a = new() { 1, 2 }; foreach (var x… 続きを読む
2021/12/29 【C# 11 候補】リスト パターン【VS 17.1 p2 で追加予定】 C# にパターンがまた1個増えます。 今回はリスト。is [..] とかで配列や List<T> にマッチ。 これをリスト パターンと言います。 Roslyn 化(C# コンパイラーを C# で書き直し)した初期の頃から、C# の進化の長期テーマになってる "Programming With Data" の続きです。 以下の表の赤丸を付けたところ。 ちなみにこのリスト パターンは Visual Studio 17.1 Preview 2 向けですでに… 続きを読む