ブログ 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/11/14 TargetFramework net5.0 なコードを .NET 6 ランタイムで動かす .NET のアップデート 昔の C# アプリ (例えば去年作った TargetFramework net5.0 なアプリ)をそのまま最新のランタイム(例えば .NET 6 ランタイム)で動かすことを考えます。 .NET は API レベルでの破壊的変更はめったにないので、 「API が合わなくてロードできない」みたいな根本的な問題はほぼ起こりません。 一方、挙動レベルでは時々破壊的変更があるんで、確実に動く保証はなかったりします。 (それでも、体感、9割方は動きますが。) ここ数バー… 続きを読む 2021/11/12 【C# 10.0】 ImplicitUsings (自動 global using) 今日は先日のファイル スコープ名前空間の話に続いて、 global using に関する話を最初にブログに書いたときにちょこっと「正式リリースまでには変更が掛かる予定」と話していた ImplicitUsings の話をしたいと思います。 global using 何回か話してはいるんですが、 .NET 6 SDK から、C# プロジェクトのテンプレートの初期状態が以下のような(コメントを除けば)1行だけのソースコードになっています。 Console.WriteLine("Hello,… 続きを読む 新しい投稿へ 過去の投稿へ
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/11/14 TargetFramework net5.0 なコードを .NET 6 ランタイムで動かす .NET のアップデート 昔の C# アプリ (例えば去年作った TargetFramework net5.0 なアプリ)をそのまま最新のランタイム(例えば .NET 6 ランタイム)で動かすことを考えます。 .NET は API レベルでの破壊的変更はめったにないので、 「API が合わなくてロードできない」みたいな根本的な問題はほぼ起こりません。 一方、挙動レベルでは時々破壊的変更があるんで、確実に動く保証はなかったりします。 (それでも、体感、9割方は動きますが。) ここ数バー… 続きを読む
2021/11/12 【C# 10.0】 ImplicitUsings (自動 global using) 今日は先日のファイル スコープ名前空間の話に続いて、 global using に関する話を最初にブログに書いたときにちょこっと「正式リリースまでには変更が掛かる予定」と話していた ImplicitUsings の話をしたいと思います。 global using 何回か話してはいるんですが、 .NET 6 SDK から、C# プロジェクトのテンプレートの初期状態が以下のような(コメントを除けば)1行だけのソースコードになっています。 Console.WriteLine("Hello,… 続きを読む