rksoftware

Visual Studio とか C# とかが好きです

C#

C# 13 allows ref struct

.NET 9 のプレビュー版で allows ref struct 書けるようになっています。 github.com パフォーマンスに厳しい用途で使われるライブラリなどで役に立つでしょう。 ■ allows ref struct こんな感じで、Span なんかをジェネリクスで受け入れられるようになりま…

C# 13 ReadOnlySet

.NET 9 のプレビュー版で ReadOnlySet 書けるようになっています。 github.com Set を安全に使うのに役に立つでしょう。 ■ allows ref struct こんな感じで、読み取り専用の Set を作れるようです。 次の例では出力が 12 ではなく 123 であることもポイント…

.NET 9 で追加された OrderedDictionary を見る

.NET 9 で System.Collections.Generic.OrderedDictionary が追加されたとのことで、見てみましょう。 github.com ■ Dictionary とは何が違うのか 順序が保持される点が違うはずです。OrderedDictionary だけにあるメソッドを見てみると明確です。 var order…

.NET 9 GeneratedRegex 属性がプロパティで

C#

GeneratedRegex 属性が .NET 9 のプレビュー版でプロパティにつけられるようになっています。 github.com ■ 部分プロパティ // See https://aka.ms/new-console-template for more information using System.Text.RegularExpressions; Console.WriteLine(A.N…

C# 13 部分プロパティ

C#

C# 13 の新機能「部分プロパティ」が .NET 9 のプレビュー版で書けるようになっています。 github.com ■ 部分プロパティ partial class A { // これは以前からできた partial void MethodA(); // これができるようになった。ここでは宣言のみ partial int Pr…

C# 13 を試す 新しいロックオブジェクト

C# 13 の 新しいロックオブジェクト を試してみます。 元ネタはこちら learn.microsoft.com System.Threading.Lock というクラスが追加されたようですね。 いくつか機能はあるようですが、使い方はこんな感じのようです。ここでは 2 種類の使い方を書いてい…

C# 13 を試す 新しいエスケープ シーケンス

C# 13 の 新しいエスケープ シーケンス を試してみます。 元ネタはこちら learn.microsoft.com そもそもの元の機能を使ったことがないですね、この機能。 // 背景色、文字色、文字修飾などいろいろとできる Console.WriteLine("\u001b[46m\u001b[35mしあん\u…

C# 13 を試す 暗黙的なインデックス アクセス

C# 13 の 暗黙的なインデックス アクセス を試してみます。 元ネタはこちら learn.microsoft.com オブジェクト初期化子の中で末尾からのインデックスが使えるということです。 // .csproj に <LangVersion>Preview</LangVersion> がないと // CS8652 機能 '暗黙的なインデクサー初期化子…

C# 13 の新機能を試す params その2

C# 13 でパワーアップする params を試してみました。 rksoftware.hatenablog.com しかし、いろいろと気になるところがある......そう思っていますね。いいでしょう試してみましょう。 C.M(1, 2); // 1:Int32[] => 1,2 C.M('a', 'b'); // 3:List`1 => a,b C.…

C# 13 の新機能を試す params

params がパワーアップしました。 M2(1, 2); M3(1, 2); static void M1(params inに t[] a) { } // これができるようになった // .csproj に <LangVersion>Preview</LangVersion> と足さないとエラー // CS8652 機能 'params コレクション' は現在、プレビュー段階であり、*サポートされ…

Build のセッションを探そう その2

とりあえず絞り込んで観ようかと思うセッションのメモです。 レコーディングなしと AI はきってみました。 .NET C# form https://build.microsoft.com/en-US/sessions/0a4b8c8c-bd24-4e77-8df9-0b2e1190c453?source=sessions Running .NET on the NES .NET W…

PowerShell で .NET のコンソールアプリにダブルクォーテーションを引数で渡す

PowerShell で .NET のコンソールアプリにダブルクォーテーションを引数で渡す。意外と難しいです。 ■ 結論 .\ConsoleApp1.exe \`" です。 ■ 内容 " は PowerShell で引数として書く場合に ` によるエスケープが必要です。その後、.NET のコンソールアプリで…

.NET のライブラリ作成時のターゲットフレームワークについて

■ 結論1 こんな感じでしょうか。 .NET Framework 派にも使ってもらいたい場合。 <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFrameworks>netstandard2.0</TargetFrameworks> <LangVersion>12.0</LangVersion> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> </Project> ■ 結論2 こんな感じでしょうか。 .NET…

C# で CSV を読み書き (ライブラリ使わず)

C#

以前に C# でライブラリを使って CSV を読み込む方法を試しました。 rksoftware.hatenablog.com しかし少々コードが長くなってしまったので、手軽に使えるスニペットを書いてみました。CSV の読み書き、何度かいても忘れてしまうのでもう書き残しておくこと…

C# で CSV 文字列を CSV としてパースして指定のセルでソートして出力するコード

C#

意外と難しかったのでメモ。 CsvHelper というライブラリを使っています。 導入方法 dotnet add package CsvHelper C# で CSV 文字列を CSV としてパースして指定のセルでソートして出力するコードです。内部的にはデータを配列で扱っています。CSV の中身に…

C# で CSV を読み込む

C#

結構面倒です。 すばらしいライブラリがあるので、ライブラリを使えばいいのですがちょっと重たい気がしたのでメモ。 ■ ここでいう重たいとは インスタンスを作って、動作の設定をセットして、while でわましながら読んだり。セルの読み出しが手間だったりを…

.NET 9 Preview 1 で追加されたもう一つの LINQ メソッド Index を書いてみる

.NET 9 Preview 1 で追加された LINQ メソッドの中の .CountBy と .AggregateBy は以前に書いてみました。 rksoftware.hatenablog.com 今日は .Index を書いてみます。 ■ 書いてみた こんな感じで index が取れます。いいですね。 // 0:a,1:a,2:b,3:b,4:c,5:…

.NET 9 Preview 1 で追加された LINQ メソッドの一つ、AggregateBy を書いてみる

.NET 9 Preview 1 で追加された LINQ メソッドを書いてみています。 rksoftware.hatenablog.com その中で前回、.AggregateBy でちょっと特殊な使い方をしたくて迷っていました。今回はそこを少し深く語ってみます。 ■ これまで .Aggregate でよくやっていた…

.NET 9 Preview 1 で追加された LINQ メソッドを書いてみる

.NET 9 Preview 1 で LINQ メソッドの .CountBy と AggregateBy が追加されたので書いてみます。 char[] t = ['a', 'b', 'a', 'a', 'b', 'c']; { IEnumerable<KeyValuePair<char, int>> m = t.CountBy(x => x); // a: 3, b: 2, c: 1 Console.WriteLine(string.Join(", ", m.Select(x </keyvaluepair<char,>…

実行タイミングのわかりにくいコードを書こう! 静的コンストラクター と モジュール初期化子

C#

C# には静的コンストラクターという機能があります。きっと書いたことがある人の方が少ない機能だと思います。 そして、モジュール初期化子というのもあります。こっちはさらに書いたことがある人が少ない機能だと思います。 静的コンストラクター learn.mic…

.NET Aspire のコンテナ部分

以前、.NET Aspire を動かしてみました。 rksoftware.hatenablog.com その際、Blazor のフロントエンドと、API のバックエンド、テレメトリーの送信、Redis コンテナがセットになったテンプレートがその形態の一つだとわかりました。 しかし、コンテナが見つ…

.NET Aspire を動かしてみる

.NET Conf 2023 で突然現れた .NET Aspire とは何なのでしょうか? 正直まったく分かっていません。大きすぎることと、細かいことは多少わかるのですが、何なのかというところが何よりまったくわかりません! 動かしてみる というわけでとりあえず動かしてみ…

キャストと as と TryParse

C#

最近計測に凝っているので、キャストと as と TryParse も計測してみました。 キャストが一番早いのは当然として、as と TryParse が条件によって違う結果に。 int を object にしてからまた int に戻す際、as より TryParse の方が早いと。この経験がが役に…

public static void Method(this ref string s)

C#

拡張メソッドの引数に ref 参照型 public static void Method(this ref string s) ってできないんですね。値型ならできますけれど。 Console.WriteLine(); static class Class { public static int Method(this object o) => 0; public static int MethodRef…

メソッドの引数の型違いでパフォーマンス計測 (3)

C#

前回メソッドの引数は object 型 > int 型 > ref int 型 で左に行くほど遅いと予想したので、雑に書いてみました。 以前の記事 rksoftware.hatenablog.com rksoftware.hatenablog.com 検証コード namespace ClassLibrary1; public static class MethodExtens…

メソッドの引数の型違いでパフォーマンス計測 (2)

C#

メソッドの引数の違いでのパフォーマンス計測をして見始めました。 rksoftware.hatenablog.com 計測には BenchmarkDotNet ( NuGet Gallery | BenchmarkDotNet 0.13.11 ) を使用してみました。 今回は、メソッドの定義上の引数の型でなく、実際に引数に渡す変…

C# のオーバーロードの確認 (継承の親子関係の型の引数)

C#

多くのプログラミング言語に、メソッドのオーバーロードという機能があります。当然 C# にもあります。 今回はそんなオーバーロードについて、そうだろうと思いつつ試していなかったことを試していきたいと思います。 ■ まずはオーバーロードとは メソッドの…

【オンライン】.NET Conf 後! C# Tokyo イベント で話をしてきました

【オンライン】.NET Conf 後! C# Tokyo イベント で話をしてきました。 csharp-tokyo.connpass.com スライドで話をするのは久しぶりかもしれません。 ■ 内容 C# Dev Kit の紹介と C# 12 の新機能の中であまり語られない印象のある機能の紹介でした。 www.do…

dotnet conf 2023 観たいセッションのメモ

世間は dotnet conf 2023 一色ですね! しかしジャパンのビジネスパーソンは忙しい……。 私も……。 セッション、98 もあるし。 ということでセッションタイトルと概要観て観たいセッションをメモ。 選定基準。 C# 12 は観る。 それを除いて新機能の紹介は切る(…

dotnet conf 2023 のめも (途中 v2)

dotnet conf 2023 のめも ついに待望の dotnet conf 2023 の時期がやってきました。しかし今回のセッション数、かなりの数が予告されています。正直全部は観きれない......。というわけで選択のための自分用メモを作っていきます。 ■ ブログ まずはブログ記…