ネコのために鐘は鳴る

寺院に住み着くパソコ〇好き

2022-01-01から1年間の記事一覧

(C#) interface の静的仮想メンバーでジェネリックコンストラクタ

interface の静的仮想メンバー C# 11 から interface に静的仮想メンバーを持たせられるようになりました。これは別名 "Generic Math" と呼ばれており、数値の演算がジェネリクスを通して呼べるようになりました。 しかし、本記事では interface の静的仮想…

(C#) 文字列補間されていない文字列補間を取得する

明日使えない小ネタ記事です。 C# 10 から文字列補間の $"" 構文が独自拡張可能になっています。 これはパターンベースになっており、特定の条件を満たす型を書くことで動作します。 本記事ではまともな使い方やメリットについては解説しません。 まともな使…

(C#) Obsolete によるコンパイルエラーを無視する

おことわり ハック記事です。非推奨 API は呼び出すべきではありません。 非推奨属性 (Obsolete) System.ObsoleteAttribute はメソッドやクラスが非推奨であることをマークする属性です。引数の有無によって警告にするかコンパイルエラーにするかを選べます…

(C#) C# 10でも ref field したい

小ネタです。 参照フィールドとは C# 11 から ref field という機能が使えるようになる予定です。(マージはされていますが、本記事執筆時点では正式リリースはされていません) ref 参照を ref 参照のまま ref struct のフィールドとして保持できるものです。…

(C#) LINQPad で JIT のネイティブコンパイル結果を見る

LINQPad について LINQPad は C# 用の簡易実行環境ツールです。簡易といいつつも Nuget Package も参照できるうえ、IDE と遜色ないぐらいのデバッグ機能があります。 むしろ、REPL 的に1行ずつ結果を見ながら追記したり、書き捨てのコードを試し書きするなど…

(C#) ModuleInitializer からのみ呼べるメソッドを作る

小ネタです。C# 9 から ModuleInitializer 属性をつけると、アセンブリのロード時に一度のみ呼び出される処理を書くことができます。 プログラマが処理を差し込めるあらゆるタイミングの中で最も早く、Main メソッドより先に呼び出すことすら可能です。楽し…