ブログ 2026/03/07 「マクロ欲しい」→「Source Generator 使え」→「むずい」→「ほら、作ったよ」 少し前に C# 言語仕様のディスカッションで、こんな提案が立ちました。 Compile-Time Inline Macros この手の提案は、ほぼ同様のものがたびたび出てきました。 そして毎回かなり高い確率で、「Source Generator を使ってくれ」が結論になります。 それでも同様の提案が繰り返し出るのは、つまりそれだけ Source Generator に心理的ハードルがある、というです。 い つ も の 毎度おおむね、話の流れはこうです: 「マクロ欲しい」… 続きを読む 2025/10/22 C# 14 の破壊的変更点(First-class Span) C# 14 で導入された First-class Span は破壊的変更を伴っています。 例えば標準ライブラリの範囲内の拡張メソッド呼び出しでも以下のような差が生じます。 int[] array = [1, 2, 3, 4]; // C# 13 まで: System.Linq.Enumerable.Contains (IEnumerable 引数) が呼ばれる // C# 14 から: System.MemoryExtensions.Contains (ReadOnlySpan… 続きを読む 2025/05/17 ファイナライザー 以下の ~Class1 のこと、(C# の言語機能名として)なんと呼びますか? class Class1 { public Class1() { } ~Class1() { } } すごく今更ながら、8年くらい前からこれの呼び名が変わってたらしいというのを最近気づいたという話になります。 ちなみに結果だけ言うと、旧称がデストラクター(destructor)、今はファイナライザー(finalizer)です。 他の言語とかの話 C# がかつてこいつのことをデストラク… 続きを読む 2025/01/12 文字列リテラルを data セクションに UTF-8 で書き込む案 ここ数回のブログ( その1、 その2、 その3 )、Language Feature Status に最近かかった更新のうち、すでに実装されたものの紹介をしていたわけですが。 「その Language Feature Status を見てると、何やら見慣れないものもちらほら増えてない?」みたいな話題も出ておりまして、今回からその辺りに触れていきたいと思います。 今日は「String literals in data section as UTF8」というやつを。 概要 普通にやる… 続きを読む 2025/01/05 nameof(T<>) 「Rosly の Language Feature Status に並んでいるもののうち、すでに preview 提供済みのものシリーズ第3段。 field キーワード First-class Span nameof(T<>) ← 今日はこれ すでに今、LangVersion に preview を指定すれば利用可能です。 今日は最後の1個の nameof(T<>) の話です。 当初「3つまとめて1ブログにする予定」だった原因。 こいつだけ対して書く… 続きを読む 過去の投稿へ
2026/03/07 「マクロ欲しい」→「Source Generator 使え」→「むずい」→「ほら、作ったよ」 少し前に C# 言語仕様のディスカッションで、こんな提案が立ちました。 Compile-Time Inline Macros この手の提案は、ほぼ同様のものがたびたび出てきました。 そして毎回かなり高い確率で、「Source Generator を使ってくれ」が結論になります。 それでも同様の提案が繰り返し出るのは、つまりそれだけ Source Generator に心理的ハードルがある、というです。 い つ も の 毎度おおむね、話の流れはこうです: 「マクロ欲しい」… 続きを読む
2025/10/22 C# 14 の破壊的変更点(First-class Span) C# 14 で導入された First-class Span は破壊的変更を伴っています。 例えば標準ライブラリの範囲内の拡張メソッド呼び出しでも以下のような差が生じます。 int[] array = [1, 2, 3, 4]; // C# 13 まで: System.Linq.Enumerable.Contains (IEnumerable 引数) が呼ばれる // C# 14 から: System.MemoryExtensions.Contains (ReadOnlySpan… 続きを読む
2025/05/17 ファイナライザー 以下の ~Class1 のこと、(C# の言語機能名として)なんと呼びますか? class Class1 { public Class1() { } ~Class1() { } } すごく今更ながら、8年くらい前からこれの呼び名が変わってたらしいというのを最近気づいたという話になります。 ちなみに結果だけ言うと、旧称がデストラクター(destructor)、今はファイナライザー(finalizer)です。 他の言語とかの話 C# がかつてこいつのことをデストラク… 続きを読む
2025/01/12 文字列リテラルを data セクションに UTF-8 で書き込む案 ここ数回のブログ( その1、 その2、 その3 )、Language Feature Status に最近かかった更新のうち、すでに実装されたものの紹介をしていたわけですが。 「その Language Feature Status を見てると、何やら見慣れないものもちらほら増えてない?」みたいな話題も出ておりまして、今回からその辺りに触れていきたいと思います。 今日は「String literals in data section as UTF8」というやつを。 概要 普通にやる… 続きを読む
2025/01/05 nameof(T<>) 「Rosly の Language Feature Status に並んでいるもののうち、すでに preview 提供済みのものシリーズ第3段。 field キーワード First-class Span nameof(T<>) ← 今日はこれ すでに今、LangVersion に preview を指定すれば利用可能です。 今日は最後の1個の nameof(T<>) の話です。 当初「3つまとめて1ブログにする予定」だった原因。 こいつだけ対して書く… 続きを読む