【C#】オブジェクトにクラスが継承されているかどうかを調べる

あるオブジェクトに特定のクラスやインターフェースが継承されているかどうかを調べる処理方法は以下の通りです。 public static bool IsInherited1<T>(object obj) where T : class { return (obj as T) != null; // ★(1) asで変換できるかどうか調べる } publ</t>…

【C#】ジェネリックが推論できないコード2選

C# の型推論は大抵の場合型を推定してくれてジェネリックの型も推論で省略することができます。 特にジェネリックパラメータを推論によって省略できるため、メソッド使用時に型を書く手間がなくなり、コードの見た目もかなりすっきりできます。が、ごく一部…

【UniTask】コールバックを待機できるように変換する

はじめに 処理の終了をコールバックで受け取る形式の非同期処理は UniTask の TrySetResult で async/await で待機可能に変換できます。 TrySetResultを使った変換は以下のように実装できます。 // 完了をコールバックで通知するメソッド public void Play(A…

【Unity】Teamsの入力中のアニメーションを実装してみる

Teams のチャットで相手が入力中の時にモニョモニョと表示される印字メーターのアニメーションを Unity + DOTween で実装してみました。 この機能、気が散るので OFF にしたいですがそういう設定はないみたいですね。 作成環境 Unity 2021.3 DOTween 実装コ…

【Unity】デリゲートを指定するときにGCAllocを減らす

あるメソッドの引数にデリゲートが必要な場合、GC Allocationを減らす方法の紹介です。 以下状況での GC Alloc が発生する話になります。 public static class SampleUtility { // デリゲートを引数に取るメソッド public int Execute(Action<int> method) { ... </int>…

【C#】Windows Formsの高DPI対応【2023年版】

Windows Forms で作成されたアプリの高 DPI 対応の 2023 年版の設定の話です。 この設定ですが、過去に色々と試行錯誤があったせいで情報が錯綜しています。この記事の最新の方法では各種設定が整理されて簡単に指定することができるようになりました。 確認…

【Minecraft】ゾンブレラで釣り出来ない現象

不具合なのか意図した挙動なの分からないけど、ソンブレラのデータパックを入れると釣りが不可能になる挙動があって、調査に結構時間を取られたのでメモしておきます。 構成 Minecraft 1.17.1 Forge 37.1.1 ゾンブレラ シーズン16 (Zombrella Season 16) Opt…

【C#】2進数を4桁ごとに区切って表示する

ある整数を2進数に変換し4桁ごとに区切り文字を入れる方法の紹介です。 // こんな数値を uint value = 0xCACAEFEF; // こんな風に文字列に変換する 1100 1010 1100 1010 1110 1111 1110 1111 Unity 上での使用を想定して GCAlloc が最小となる & そこそこ高…

VisualStudio2022がメモリを使い過ぎている場合の対処法

なんか VisualStudio 2019 で開いてたソリューションを 2022 で開くと 3倍くらいメモリを消費してる場合があるため、PCのメモリが 16GB だと Teams + Outlook + Chorome なんか開いてると、メモリを使いきってそのまま全部クラッシュしたり、OS が変な感じに…

【Unity】放置ゲームやクリッカーゲームに出てくる単位を表現する

タイトルの通り、徐々に扱う数値が大きくなってくゲームを「インクリメンタルゲーム」と言ったりします。このジャンルは色々と呼び方があるようで「放置ゲー/放置ゲーム」や「クリッカーゲーム」(クッキークリッカーが特に有名です)などの呼び方もあります…

VisualStudioとC#バージョンの関係性

だんだん状況が変わってきたのでメモ。 2023年3月現在、.NET のバージョンと C#、VisualStudio の対応関係は以下のような関係性になっています。 .NET ver. C# ver. VisualStudio .NET 7 C# 11 2022 .NET 6 C# 10 2022 .NET 5 C# 9.0 2022, 2019 .NET Core 3…

【C#】文字列から一部分を取り出す(Substringの使い方)

C# で文字列から一部分を取り出す処理は Substring メソッドを使用します。 この記事では、SubString の使い方と注意点、便利な使い方を紹介したいと思います。 確認環境 .NET 6 VisualStudio 2022 Windows 11 この記事は C# であればどのバージョンでも使用…