C#

新着順 人気順

WPF の Fluent.Ribbon でリボンプログラミング 第5回:クイックアクセスバー、ツールバーメニューを表示する

今回は作成済みウインドウに対し、クイックアクセスバーへのアイコン表示、ツールバーメニューへコントロールの配置を行います。

C#で表示する小数点の桁数を指定する

C#

C#で小数点以下の桁数を指定して文字列表示を行う方法を紹介です。

C#の4つのTimerの用途と使い方

C#というか.NETのタイマーの種類について整理と説明をしたいと思います。 Timers.TimerとThreading.Timerの概要 Forms.TimerとDispatcherTimerの概要 4種類のオブジェクトの使い方 System.Timers.Timerの使い方 System.Threading.Timerの使い方 System.Windo…

C#でTypeInitializationExceptionが発生する

ある日突然プログラムを実行したら「TypeInitializationException」が発生した場合の対処法です。 自分のコード内で発生している場合、以降で説明する状況で発生している可能性があります。 // 発生する例外のメッセージ // .NET Core System.TypeInitializa…

【C#】Timerの精度にtimeBeginPeriodが効くのか確認する

System.Threading.Timer クラスで定周期に実行されるコールバックの実行間隔に対して、システムクロック解像度を指定する timeBeginPeriod が影響を与えるかどうかが気になったので検証してみたいと思います。*1 *2 通常だと、Timer の実行間隔を 1msを指定…

URP+2DRendererで画面の一部にモザイクやブラーをかける

URP + 2DRenderer にすると _OpaqueTexture が利用できない(設定しても画像が設定されない)ため旧来の GrabPass を使用したレンダリング結果に対して効果をつけることが直接はできませんでした。旧来、対処法として RenderTexture を使用した実装などで少…

【C#】TryParseExactとParseExactの使い方

すぐ忘れて何度も調べることになるのでメモ DateTime.TryParseExact と DateTime.ParseExact の使い方です。 確認環境 VisualStudio2019 C# 9.0 すごい昔からあるからバージョン不問 DateTime.TryParseExact 具体的なフォーマットを指定する場合以下のように…

WPFのボタンの角を丸くする

前回の「WPFのボタンをフラットデザインに変更する」で表示したボタンは角が四角かったのですが、今回は丸く表示してみようと思います。 といっても大した事はなくて、前回のコードのContentTemplateの子要素のBorderにCornerRadiusを追加するだけです。 見…

【C#】INIファイルを読み書きする(DllImportなし)

INI ファイルを C# で読み書きするために DllImport で Windows の User32.dll 使うのは確かに簡単ですが汎用性に欠けると思うので、純粋な C# のみかつ、.NET 4.6 くらいからコピペで使えるライブラリを作成してみました。 ライブラリの性能 確認環境 形式…

ASP.NET WebAPIでURLパラメーターを受け取る

URLパラメータ*1は、URLの最後に以下のように加えられた変数を指します。 https://localhost:8080/app/v1/data?code=100 この「code=100」の部分を ASP.NET Core Web API で受け取る方法です。 確認環境 .NET 6 + ASP.NET Core Web API VisualStudio 2022 Wi…

【Unity/C#】Stateパターンで状態を管理する

今回は State パターンの説明と Unity/C# で使用するときの簡単な実装例の紹介です。 Stateパターンの説明 【前提】パターンを使わない場合 Stateパターン C#/Unityで実装する 【事前準備】Playerクラス Stateインターフェース StateImplement1, 2 Contextク…

インターフェース分離の原則(ISP)

SOLID の原則というソフトウェア設計・実装をする際に覚えておいた方がいい5つの原則のうち、インターフェース分離の原則(Interface Segregation Principle = ISP)の紹介をしたいと思います。 記事中の実装言語は .NET 8(C#12)です。 インターフェース分…

ガチャの確率をシミュレーションしてみた

グラブルが確率を偽って景品表示法に違反しているだとか、To LOVEるのガチャの確率が異様に低いとか世の中ソーシャルゲーム内に設置されれているガチャで騒ぎが起きているようです。その確率で、実際にどれくらいガチャを引けば当たるのか、少し気になります…

階層型状態マシン(HFSM)を実装する

GoF のデザインパターンで State パターンを階層化した、階層型有限状態マシン(HFSM:Hierarchical Finite State Machines)を作成してゲーキャラクターの制御を行ったので実装例を紹介したいと思います。「階層型のステートマシン」なんて言ったりもします…

【Unity】モーダルダイアログを実装する(2019.4版)

タイトルには2019.4版と書きましたが特に新機能を使っているわけではないです。新しい環境でもできるよーって感じです。Unity は uGUI というUI作成機能があるのでかなり簡単にダイアログが実装できます。ほとんどコードも書かないで大丈夫です。そこでアプ…

【C#】QueueとConcurrentQueueの使い方

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

C#で最大容量つきリングバッファーを実装する

2020-06-12 リングバッファーは、FIFO(ファーストIN, ファーストOUT)つまり先に入れたものが、取り出すときは先に出ていく、Queueと同じような構造を持っています。 リングバッファーって自分のイメージでは、有限のサイズのリングの大きさ(つまり入れら…

C#でフラグ扱いの変数名にフラグと命名してはいけない

若干、揚げ足取りなのかもしれませんが、このような記事がQiitaに上がっていた上がっていました。 qiita.com で、フラグ的なbool型の変数にフラグって名前を付けちゃうと脳に負担がかかるからやめようという話です。記事では評価方法の話題ですがここでは変…

C#でEnumに付与した属性と属性の値を取得する

2020-09-01 タイトルの通り、C#で自分で作成したEnum型に属性を付与し、その属性を取得およびその属性の値の取得をしたいと思います。 属性をオブジェクトとして取得して内容を取り出す流れになります。 対象の型の準備 値を取得する拡張メソッドの作成 拡張…

C#の共有メモリで簡単にオブジェクトを共有する方法

C#を使ってプロセス間でデータ共有をする際にオブジェクトを共有する方法です。 プロセス間でオブジェクトを共有したい場合、大抵の場合構造体を定義してメモリに書き込めばすれば良いとネットに書いてあります。ですが、普段クラスで扱っているデータをその…

【C#】2,8,10,16進数文字列と数値の相互変換方法まとめ

2020-08-12 数字と文字列にはいろいろ変換方法があるのですが、一覧的に確認できると便利かと思いまとめてみました。 他にもいろいろやり方はありますがこれさえ覚えておけば問題ないと思います。 数値 → 2,8,10,16進数文字列 に変換 2,8,10,16進数文字列 → …

【C#】ValueObjectの実装例

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

【C#】非同期で排他制御できるSemaphoreSlimクラスの使い方

最近使用する回数が増えてきた非同期 (async/await) 対応の排他制御の紹介をしたいと思います。 はじめに 同時実行数に制限がある排他制御を行うため SemaphoreSlim クラスを使います。 このクラスはプロセス内に限定した排他制御を行いたい時(すなわち、別…

【C#】regionの使いどころ

2020-09-03VisualStudio上で任意の位置のコードを折りたたむ機能で #region ~ #endregion ディレクティブというものがあります。「リージョン」と読みます。そんなリージョンですが、以下のように public void Hoge() { #region ナントカの処理 if(this....…

【C#】staticクラスとシングルトン考察

C# には言語固有機能として static クラスという機能があります。クラス自体を static と宣言することで、インスタンス作成を禁止し、static 宣言したクラスのインスタンスが複数作成できないようにできます。ですがこの機能、デザインパターンにあるシング…

任意の値型をジェネリック(T)型にキャストする

C#

2022-07-26 ジェネリックの型の変数を int や bool などの値型にキャストして返却する方法の紹介です。 変換できないエラーが出る 以下の例では、型チェック後には型が判明しているのですが、コンパイルできずエラーになります。 public T Convert<T>(string ke</t>…

C#で配列のサイズ変更や要素を末尾に追加する

C#

C#で宣言済みの配列のサイズを変更するためにはArray.Resizeを使用します。末尾に要素を追加する場合、Resizeで+1した後最後にデータを追加します。 実装コードは以下の通りです。 // 100 → 200へ配列のサイズを変更 int[] array = new int[100]; Array.Resi…

C#で乱数を作成する & 毎回異なるシードを指定する方法

C#(Unity以外/.NET FM, .NET Core)で乱数を生成するには、System.Random クラスを使用します。 Randomクラスの基本的な使い方 短時間でRandomクラスを複数インスタンス化すると乱数が同値になる 回避案(1) Randomクラスのインスタンスを全体で使いまわす …

App.config(アプリケーション構成ファイル)を利用する

C#の実行形式のファイル(.NET Framework, .NET Core)にはアプリーション固有の設定を XML 形式で記述できるアプリケーション構成ファイルというものが添付できます。このファイルに設定を書いておくと起動時に自動的に読み込まれ以降、この設定を読み出すこ…

【C#】System.Text.Jsonでオブジェクトのシリアライズ・デシリアライズ

.NET Core 3.0 から利用可能な新しい標準ライブラリ JSON シリアライザー System.Text.Json の JsonSerializer 使い方の紹介です。