.NET

【C#】QueueとConcurrentQueueの使い方

C# で キューというデータ構造を扱う Queue<T> クラスと、スレッド排他制御機能付きの ConcurrentQueue<T> クラスの使い方の紹介をしたいと思います。 2つのQueue まず「Queue」ですが一言で言うと、入れたデータが入れた順番に取り出せる入れ物の事を指します。以</t></t>…

C#でビット操作を簡単に行うラッパークラスの紹介

例えばC#でハードウェアに近い I/O を扱う場合、1チャンネルが ushort の1ブロックの読み書きが要求されていて、各ポートはビットごとに割り当てられているなんてケースが割とありますがいちいち出力ポートの設定を読んでビット操作をしてまた書き込むなどの…

Unity向けタイマーライブラリ「UniTimer」をリリースしました

Unity向けのタイマーライブラリ「UniTimer」をリリースしました。 Git のリポジトリは以下の通りです。 github.com Github の README と内容は同じですが、このライブラリの説明などは以下となります。 動作環境 Unity 2020.3 以降 このライブラリを使用する…

等間隔に並んだ画像データをグリッド毎にトリミングする

例えばスプライトアニメーションで等間隔に並んでいるデータの余白が大きすぎる場合、各画像の余白をトリムしたい場合がありますが、1枚の画像になっている場合トリミングするのはなかなか大変です。今回はそういった画像を 実行例 分かりやすいように極端に…

【C#】appsetting.jsonをコンソールで扱う

コンソールアプリでも appsettings.json が使いたい場合の設定と実装方法及びヘルパークラスの紹介です。 確認環境 この記事は以下環境で確認しています。 VS2019(16.11.4) .NET 5(C#9.0) コンソールプロジェクトが作成済み パッケージの導入 「NuGet パ…

.NET5のWPFにReactivePropertyをセットアップする

以前より圧倒的に簡単にセットアップできるようになっていて逆に混乱してしまったのでまとめておきます。 確認環境 VS2019(16.11.4) .NET 5(C#9.0) WPF プロジェクト作成済み(.NET, .NET F/W, .NET CoreどれでもOK) セットアップ方法 Visual Studio の…

.NET Core/.NET5以降のコンソールアプリでWPFの機能を利用する

.NET でコンソールアプリを作成した場合は WPF 関係のライブラリが使用できません。 static void Main(string[] args) { Bi tmapSource s = null; // CS0103 現在のコンテキストに 'BitmapSource' という名前は存在しません } IDE 上には以下のように提案が…

【C#】ValueObjectの実装例

2022-07-03 この記事は、int や string の代わりに使用する値はプリミティブ型だけど値が特定の意味を持つため型にして区別したい時に使用する immutable(不変性:一度作ったら以降に内容が変化しないよう) なオブジェクトを実現ための C# での実装例の紹…

【C#】Listと配列でforとforeachのアクセス速度比較

2022-07-31 結論としては以下の通り。 配列は for と foreach の速度はほぼ同じ List<T> は for のほうが foreach より10%以上早い 配列に対する操作は List に対する操作より 50%以上早い List<T> クラスの ForEach メソッドはメリットが無いので使わないほうが</t></t>…

.NET Coreと.NET 5以降のコンソールアプリでWindows Formsの機能を利用する

.NET Core および .NET 5以降のコンソールアプリ上で Windows Forms の機能を利用可能にするための設定方法の紹介です。 以下の画像のように、プロジェクトテンプレートをからコンソールアプリを選択して作成したプロジェクトは Windows Formsにあった機能群…

C#でDictionaryのキーに複数のキーを設定する

2022-01-31 DictionaryのKeyに指定するオブジェクトを工夫することで複数のキーを指定できるようにしたいと思います。ただし、検索する見かける Tuple を使用した複数の値の組み合わせを Dictionary のキーに指定する方法はが見づらい & 値の意味が不明瞭化…

C#でStopwatchを使った時間計測を1行でできるようにする

ある特定の区間の実行時間を測定したい事があると思います。 その場合、一般的にはStopwatch(System.Diagnostics名前空間内)を使って以下コードを記述していると思います。 // 典型的な時間計測のコード public static void Main(string[] args) { // 千回…

C#でFizzBuzzを実装する

FizzBuzzの問題の解法は出尽くしていると思いますが、自分でコードを書いた事が無かったためチャレンジしてみようと思います。 作成環境はVS2017(15.7.2) + .NET4.7.2 (≒C#7.2)です。 ルール確認と模範解答 まずはルールの確認です。概ね以下の通りです。 最…

C#でZipファイルを解凍・圧縮する

C#でZipファイルを扱う方法を紹介したいと思います。この機能は、結構最近追加されたため.NET4.5以上で利用可能です。 簡単なファイル解凍・圧縮 Zioファイルの解凍 フォルダをZipファイルに圧縮 複雑なアーカイブ操作 アーカイブ内のファイルを列挙する ア…

C#でリストの特定の要素の位置を変更する

あるリストに入ってる1つの要素の順序(位置)を変更します。 例えば、5番目の要素を3番目に移動したいなどの状況想定します。List クラスを使いますがこのようなメソッドは存在しません。 実装例 順序変更を List クラスの拡張メソッドとして実装したいと思い…

【C#】Listの使い方

C#で動的に要素を追加したり、削除したりしたいときに使う動的な配列「リスト」の使い方の簡単なメモです。

【C#】プロセスの現在のメモリ使用量を取得する

2022-07-04 Environmentクラスで取得する プロセスが使用しているメモリ使用量を取得するには Environment クラスの WorkingSetProperty を参照すれば現在の使用量が取得できます。 long currentSet = Environment.WorkingSet Console.WriteLine("現在のメモ…