ブログ 2021/12/07 【C# 10.0 関連】引数なしコンストラクターの Activator バグ そういえばライブ配信(8月)とか Twitter では話しているものの、ちゃんとこのサイト内には書いていなかったなと言う話。 C# 10.0 で構造体の引数なしコンストラクターが書けるようになりました。 struct A { public int X; public A() => X = 1; // ←要はこういうの } 今年2月にブログで書いてるんですが、これ、C# 6.0 の時に一度採用しようとしたものの、Activator.CreateInstance… 続きを読む 2021/12/04 Regional Indicator (国旗絵文字) 今日は10/31 にやった配信で出てた国旗絵文字の話とか。 絵文字を検索したら別の絵文字が引っかかるというのの原理的な話になります。 元ネタ まず配信中になんで国旗の話が出たか(「先日、国旗絵文字をどうデコードするか問題を見たなぁ」というのの元ネタ)の紹介。 この配信の数日前に、こんなネタがバズっておりまして。 EUC-JP では『海』 (b3 a4) を検索した際に『ここ』(a4 b3 a4 b3) にマッチしてしまう UTF-8は自己同期になるように考えられているし、UT… 続きを読む 2021/11/28 Unicode 演算子 (∑Σ とか ∫ʃ とか) C# ライブ配信をしていて、「括弧用の記号の種類が少なすぎる」みたいな話題から、 「あるよ、括弧。Unicode には」みたいな話になり、 「Swift ではマジでいろんな記号が使える」という話に脱線したときの話。 配信では「括弧がたくさんある」という話と「Swift では演算子にいろんな文字が使える」という話が混ざっていて、 実際に Swift で色々使えるのは括弧ではないんですけど、演算子の方は本当に Swift で使えるものがかなり自由が効く仕様になっていまして。 例えば以下のコ… 続きを読む 2021/11/23 【C# 10.0】 トップ レベル ステートメントの変更点 そういえば、文法的な変更ではないのでどこにも告知は出ていないもの(サイレント修正)なんですが、トップ レベル ステートメント (C# 9.0 で追加)に変更点が2つあります。 空ステートメント禁止 以下の2つのコードを見比べてください。 1つ目: class Program { static void Main() => Console.WriteLine("Hello World!"); } 2つ目: ; class Program… 続きを読む 2021/11/20 【C# 10.0】 AppendLiteral(" ") C# 10.0 で、文字列補間に対するパフォーマンス改善が入りました。 例えば、以下のようなコードがあったとして、 static string A(int x, int y) => $"({x}, {y})"; static string B(int a, int b, int c) => $"{a}.{b}.{c}"; C# 10.0 では $"" の部分がそれぞれ以下のように展開されます。 usin… 続きを読む 新しい投稿へ 過去の投稿へ
2021/12/07 【C# 10.0 関連】引数なしコンストラクターの Activator バグ そういえばライブ配信(8月)とか Twitter では話しているものの、ちゃんとこのサイト内には書いていなかったなと言う話。 C# 10.0 で構造体の引数なしコンストラクターが書けるようになりました。 struct A { public int X; public A() => X = 1; // ←要はこういうの } 今年2月にブログで書いてるんですが、これ、C# 6.0 の時に一度採用しようとしたものの、Activator.CreateInstance… 続きを読む
2021/12/04 Regional Indicator (国旗絵文字) 今日は10/31 にやった配信で出てた国旗絵文字の話とか。 絵文字を検索したら別の絵文字が引っかかるというのの原理的な話になります。 元ネタ まず配信中になんで国旗の話が出たか(「先日、国旗絵文字をどうデコードするか問題を見たなぁ」というのの元ネタ)の紹介。 この配信の数日前に、こんなネタがバズっておりまして。 EUC-JP では『海』 (b3 a4) を検索した際に『ここ』(a4 b3 a4 b3) にマッチしてしまう UTF-8は自己同期になるように考えられているし、UT… 続きを読む
2021/11/28 Unicode 演算子 (∑Σ とか ∫ʃ とか) C# ライブ配信をしていて、「括弧用の記号の種類が少なすぎる」みたいな話題から、 「あるよ、括弧。Unicode には」みたいな話になり、 「Swift ではマジでいろんな記号が使える」という話に脱線したときの話。 配信では「括弧がたくさんある」という話と「Swift では演算子にいろんな文字が使える」という話が混ざっていて、 実際に Swift で色々使えるのは括弧ではないんですけど、演算子の方は本当に Swift で使えるものがかなり自由が効く仕様になっていまして。 例えば以下のコ… 続きを読む
2021/11/23 【C# 10.0】 トップ レベル ステートメントの変更点 そういえば、文法的な変更ではないのでどこにも告知は出ていないもの(サイレント修正)なんですが、トップ レベル ステートメント (C# 9.0 で追加)に変更点が2つあります。 空ステートメント禁止 以下の2つのコードを見比べてください。 1つ目: class Program { static void Main() => Console.WriteLine("Hello World!"); } 2つ目: ; class Program… 続きを読む
2021/11/20 【C# 10.0】 AppendLiteral(" ") C# 10.0 で、文字列補間に対するパフォーマンス改善が入りました。 例えば、以下のようなコードがあったとして、 static string A(int x, int y) => $"({x}, {y})"; static string B(int a, int b, int c) => $"{a}.{b}.{c}"; C# 10.0 では $"" の部分がそれぞれ以下のように展開されます。 usin… 続きを読む