Start Debugging

タグ: csharp-14

26 件 · ページ1/3

C# の `with` 式は実際に何をコピーするのか、そしてレコードの計算プロパティが再計算されないのはなぜか
with 式はレコードのコンパイラー生成メソッド <Clone>$ を呼び出し、そこでコピーコンストラクターが全インスタンスフィールドをコピーし、すべての初期化子をスキップします。そのため、他のプロパティから初期化されるプロパティ、キャッシュされた値、Guid の ID は古いまま残ります。.NET 10 と C# 14 で計測し、実際に有効な対処法を紹介します。
C# の ref-safe-context とは何か、コンパイラーは ref ローカルのそれをどう決めるのか
ref-safe-context は、変数への参照が有効であり続けるスコープです。4 つのコンテキスト、ref ローカルのコンテキストが初期化子で固定されるというルール、ref 再代入がコンテキストを広げることも狭めることもできない理由、そこから生じる CS8157、CS8168、CS8374、CS9079 のエラーを、C# 14 と .NET 10、.NET 11 RC1 のコンパイラー出力とともに解説します。
C# のリポジトリメソッドで Task を直接返す vs async/await でパススルーする: どちらを使うべきか
リポジトリのパススルーメソッドで async/await を省略すると約 6 ns と 72 バイトを節約できますが、スタックフレーム、try/catch のセマンティクス、安全なリソース破棄を失います。計測済みのホットパス上の純粋なパススルーでない限り、return await を残してください。
次へ