てくメモ

trivial な notes

2023-03-01から1ヶ月間の記事一覧

【C#】外部プロセスを扱うなら今は

C#

ProcessXを使いたい。 参考:neue cc - ProcessX - C#でProcessを C# 8.0非同期ストリームで簡単に扱うライブラリ 標準のProcessクラスは、現代風でない使い心地であるほか、ハマりポイントもある。 参考:非同期外部プロセス起動で標準出力を受け取る際の注…

【C#】遠慮なく IDisposable な構造体で包んで using

C#

IDisposableな構造体について。アロケーションを避けるために構造体を使用したとしても、IDisposableインターフェースが噛む using ではbox化が発生するのでは――? との疑問も浮かぶが、具象で using するケースでは発生しない。(devirtualization? 違うか…

【C#】Span の分解

C#

Spanの分解について。 本題の前に、スライシングに触れる。 とても快適だと思う。 // ReadOnlySpan<char> span; var s1 = span.Slice(1); // Slice メソッド var s2 = span[1..]; // 範囲演算子 var s3 = span.Slice(1, 3); // 長さで切るときは Slice の方がわか</char>…

【C#】ReadOnlySpan<char>.Split をつくったけれど、反省があった話

C#

【追記】 .NET 8 ではReadOnlySpan<char>.Split(Span<Range>, char, StringSplitOptions)とできる拡張メソッドが追加され、この記事でやりたかったようなことが標準で行えるようになっています。 ReadOnlySpan<char>ってSplitが無いんだ、と思ったことがあるのは自分だけではな</char></range></char>…

【C#】byte配列からの型変換

C#

既存のバイナリファイルからの読取りをBinaryReaderクラスとシフト演算の組み合わせで行っているコードを見たのをきっかけに整理。 最初に、エンディアンの違いを実質考えなくてよいとき。まず普通なのは、BitConverterクラスを使うこと。 これは特筆なし。 …