ブログ 2023/12/05 \e (エスケープ文字のエスケープ シーケンス) 先々月書いた「C# 13 向けトリアージ」で紹介してた C# 13 候補の1つ、「\e エスケープ シーケンス」が早々に実装されてたという話です。 .NET 8 正式リリース記念の配信ではちょこっと触れてたんですが、そういえばブログには書いてなかったので紹介。 エスケープ文字 キーボードで打てないような文字や、画面に表示されない文字を入力したりするために、 「\n と書いたら改行(U+000A, new line, line feed)に置き換える」みたいな仕様があり、これをエスケープ… 続きを読む 2023/10/18 C# 13 向けトリアージ .NET 8 も RC 2 な段階になって、ここから GA までの間に仕様が変わるということはほとんどなくなってきました。 となると、話題はもうその次。来年向け(C# 13 / .NET 9 ターゲット)の話が出てきます。 C# Design Meeting でも、13向けのトリアージがちらほら始まりました。 とりあえず現状、2件。 LDM Notes for October 9th, 2023 LDM Notes for October 16th, 2023 以下のようなも… 続きを読む 2023/08/03 Length-based switch dispatch 「そういやブログに書いてなかった」ネタ。 Pull Request が通った プレビュー版(Visual Studio 16.6 Preview 1)でよければ今年の2月頃から使えてた話です。 文字列に対する switch に新しい最適化手法が導入されました。 元々の switch のコスト 例として以下のような switch を考えます。 static int StringSwitch(string s) => s switch { "abc"… 続きを読む 2023/06/24 モジュール初期化子が呼ばれる順 前回のブログに続き、 先日の C# 配信で出てたネタ。 まあ、今回のは知ったところで誰が助かるということもないようなトリビア的な話です。 後だし優先で上書き その C# 配信内で、 「CultureInfo.DefaultThreadCurrentCulture を上書きすれば対処はできるけども」 みたいな話が出まして。 ただ、まあ、こういう「グローバルに影響がある静的プロパティの書き換え」は決してお行儀はよくないじゃないですか。 誰でも、いつでも上書き可能。 すぐに競合しかね… 続きを読む 2023/06/20 .NET の文字列比較でカルチャー未指定を検知する 先日の C# 配信で、 「これはブログに書いておくと助かる人がいるんじゃないか」と言われたものをブログ化。 背景: カルチャー依存問題再び うちのブログでも何回か書いてるんですが、 .NET の文字列比較は、カルチャー依存比較するものと Ordinal (文字コード通り)比較するものが混在していて、なかなかにやばいです。 .NET のカルチャー依存 API 問題 忘れがちなカルチャー依存問題 例えば以下のようなやつ。 using static System.Consol… 続きを読む 過去の投稿へ
2023/12/05 \e (エスケープ文字のエスケープ シーケンス) 先々月書いた「C# 13 向けトリアージ」で紹介してた C# 13 候補の1つ、「\e エスケープ シーケンス」が早々に実装されてたという話です。 .NET 8 正式リリース記念の配信ではちょこっと触れてたんですが、そういえばブログには書いてなかったので紹介。 エスケープ文字 キーボードで打てないような文字や、画面に表示されない文字を入力したりするために、 「\n と書いたら改行(U+000A, new line, line feed)に置き換える」みたいな仕様があり、これをエスケープ… 続きを読む
2023/10/18 C# 13 向けトリアージ .NET 8 も RC 2 な段階になって、ここから GA までの間に仕様が変わるということはほとんどなくなってきました。 となると、話題はもうその次。来年向け(C# 13 / .NET 9 ターゲット)の話が出てきます。 C# Design Meeting でも、13向けのトリアージがちらほら始まりました。 とりあえず現状、2件。 LDM Notes for October 9th, 2023 LDM Notes for October 16th, 2023 以下のようなも… 続きを読む
2023/08/03 Length-based switch dispatch 「そういやブログに書いてなかった」ネタ。 Pull Request が通った プレビュー版(Visual Studio 16.6 Preview 1)でよければ今年の2月頃から使えてた話です。 文字列に対する switch に新しい最適化手法が導入されました。 元々の switch のコスト 例として以下のような switch を考えます。 static int StringSwitch(string s) => s switch { "abc"… 続きを読む
2023/06/24 モジュール初期化子が呼ばれる順 前回のブログに続き、 先日の C# 配信で出てたネタ。 まあ、今回のは知ったところで誰が助かるということもないようなトリビア的な話です。 後だし優先で上書き その C# 配信内で、 「CultureInfo.DefaultThreadCurrentCulture を上書きすれば対処はできるけども」 みたいな話が出まして。 ただ、まあ、こういう「グローバルに影響がある静的プロパティの書き換え」は決してお行儀はよくないじゃないですか。 誰でも、いつでも上書き可能。 すぐに競合しかね… 続きを読む
2023/06/20 .NET の文字列比較でカルチャー未指定を検知する 先日の C# 配信で、 「これはブログに書いておくと助かる人がいるんじゃないか」と言われたものをブログ化。 背景: カルチャー依存問題再び うちのブログでも何回か書いてるんですが、 .NET の文字列比較は、カルチャー依存比較するものと Ordinal (文字コード通り)比較するものが混在していて、なかなかにやばいです。 .NET のカルチャー依存 API 問題 忘れがちなカルチャー依存問題 例えば以下のようなやつ。 using static System.Consol… 続きを読む