ブログ 2024/12/19 (没) UTF-8 文字列補間 今日のは、C# 言語機能としては否決されたものの、ほぼ同等のものがライブラリと JIT 時最適化で実現されたという話になります。 ちなみに今日のこの話は .NET 8 の頃の話で、「そういえば去年書いてなかった」ネタになります。 UTF-8 リテラルがあるなら C# 11 で UTF-8 リテラルが入って、 C# プログラム中に UTF-8 なバイト列を ReadOnlySpan<byte> で直接埋め込めるようになりました。 ReadOnlySpan<byte&… 続きを読む 2024/12/18 .NET 9 の破壊的変更の1つを踏んだ話 かなりのレアケースを踏んだので酒の肴程度にその話を。 破壊的変更の内容: 浮動小数点数 → 整数の飽和変換 破壊的変更の告知ページ: Floating point-to-integer conversions are saturating 最小再現コードは以下の通り。 var x = int.MaxValue; var y = (float)x; var z = (int)y; Console.WriteLine(z); z の値は、 .NET 8 では -2… 続きを読む 2024/04/04 ref/ref struct 変数を非同期メソッド中で使えるように 前回の Lock クラスの話を見てから、とりあえず以下のコードを見てほしい。 using System.Runtime.Versioning; [module: RequiresPreviewFeatures] class MultiThreadCode { private static readonly object _syncObj = new(); private static readonly Lock _syncLock = new(); pu… 続きを読む 2024/04/04 Lock クラス 今日は、 .NET 9 で Lock クラスというのが入る予定で、 それに伴って C# コンパイラーにも対応が必要そうという話。 一応雰囲気的には C# 13 に入りそう。 任意のオブジェクトを lock C# はなぜか任意のオブジェクト インスタンスを使って排他制御ができます。 ロックを掛けるために以下のようなコードを書くことになります。 class MultiThreadCode { private readonly object _syncObj = new ob… 続きを読む 2024/03/20 Extensions (拡張型) C# 3.0 から拡張メソッドが使えるわけですが、 もうちょっといろんな「拡張」をしたいという話が前々からあります。 例えば以下のような要求。 既存の型に静的メンバーも足したい プロパティや演算子も足したい インターフェイスの後付けもしたい 今では Extensions とか呼ばれていまして、以下の issue でトラッキング中。 Exploration: Shapes and Extensions #164 ここからさかのぼって、かつては Extension e… 続きを読む 過去の投稿へ
2024/12/19 (没) UTF-8 文字列補間 今日のは、C# 言語機能としては否決されたものの、ほぼ同等のものがライブラリと JIT 時最適化で実現されたという話になります。 ちなみに今日のこの話は .NET 8 の頃の話で、「そういえば去年書いてなかった」ネタになります。 UTF-8 リテラルがあるなら C# 11 で UTF-8 リテラルが入って、 C# プログラム中に UTF-8 なバイト列を ReadOnlySpan<byte> で直接埋め込めるようになりました。 ReadOnlySpan<byte&… 続きを読む
2024/12/18 .NET 9 の破壊的変更の1つを踏んだ話 かなりのレアケースを踏んだので酒の肴程度にその話を。 破壊的変更の内容: 浮動小数点数 → 整数の飽和変換 破壊的変更の告知ページ: Floating point-to-integer conversions are saturating 最小再現コードは以下の通り。 var x = int.MaxValue; var y = (float)x; var z = (int)y; Console.WriteLine(z); z の値は、 .NET 8 では -2… 続きを読む
2024/04/04 ref/ref struct 変数を非同期メソッド中で使えるように 前回の Lock クラスの話を見てから、とりあえず以下のコードを見てほしい。 using System.Runtime.Versioning; [module: RequiresPreviewFeatures] class MultiThreadCode { private static readonly object _syncObj = new(); private static readonly Lock _syncLock = new(); pu… 続きを読む
2024/04/04 Lock クラス 今日は、 .NET 9 で Lock クラスというのが入る予定で、 それに伴って C# コンパイラーにも対応が必要そうという話。 一応雰囲気的には C# 13 に入りそう。 任意のオブジェクトを lock C# はなぜか任意のオブジェクト インスタンスを使って排他制御ができます。 ロックを掛けるために以下のようなコードを書くことになります。 class MultiThreadCode { private readonly object _syncObj = new ob… 続きを読む
2024/03/20 Extensions (拡張型) C# 3.0 から拡張メソッドが使えるわけですが、 もうちょっといろんな「拡張」をしたいという話が前々からあります。 例えば以下のような要求。 既存の型に静的メンバーも足したい プロパティや演算子も足したい インターフェイスの後付けもしたい 今では Extensions とか呼ばれていまして、以下の issue でトラッキング中。 Exploration: Shapes and Extensions #164 ここからさかのぼって、かつては Extension e… 続きを読む