.NET Core

ValueObjectでファイルパスとファイル名を区別する

string 変数が xxxFilePath と書いてあってファイル名しか入ってない、xxxFileName と書いてあったのに中身はファイルパスということが頻発したりこのstring型そもそも何が入ってるのかわからないなんて事が頻発したので対応策を考えました。プリミティブな…

【C#】MainメソッドでIDE1006の警告が出る場合

標準テンプレートでは以下のような指摘事項が表示されます。割とうっとおしい。 // IDE1006 名前付けルール違反: 最初の単語 'Main' は、小文字で始まらなければなりません static void Main(string[] args) これは .NET の一般的な名前付けのガイドラインが…

【C#】リフレクションでnullチェックを自動化する

リフレクションを使って null チェックを自動化する方法です。 C# で null チェックをする場合以下のようなコードを書くと思います。 // サンプル用のクラスと変数宣言 public class Sample { public int A { get; set; } public int B { get; set; } } var …

【C#】コンストラクタの挙動まとめ

C# のコンストラクターの宣言のされ方による呼び出しの基本的な動作のまとめです。暗黙のコンストラクターと継承したときの挙動を中心に確認しています。内容は自分用のメモです。久しぶりに気にすると動きを忘れていることがあったので改めて文字に起こして…

【C#】ValueObjectの実装例

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

【C#】リフレクションでオブジェクトの内容を比較する

リフレクションを使ってオブジェクトを中身で比較する方法です。 C#でオブジェクトを比較するときは以下のようにコードを書くと思います。 // サンプル用のクラスと変数宣言 public class Sample { public int A { get; set; } public int B { get; set; } }…

JSONを整形して保存するC#の実装例

未整形の JSON を整形してファイルに保存しなおす C# プログラムの実装例です。未知の構造の JSON フォーマットを扱うので Newtonsoft の JSON ライブラリ(の JObject )を使用します。 実装環境 .NET Core 3.1 C# 9.0 VisualStudio2019 Windows10 実装コー…

C#の文字列補完はToStringした方が高速になる理由を調べてみた

はじめに C# の「文字列補完」機能という機能があります。ものすごい雑に言うと C# 6 以降で可能な文字列の先頭に「$」起動を付けることでフォーマット付き文字列を埋め込んで記述することができ視認性を向上することができる機能です。 記述例は以下の通り…

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

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

C#で再帰を使わずにフォルダ内のファイルを列挙する

再帰処理を使わないでC#でフォルダ階層をたどってファイルをリストアップする方法の紹介です。 最後に記載がありますが実際はフォルダを巡回する必要ありません。C#はAPIをひとつつ呼ぶだけで実装できます。 再帰処理を使ってファイルを列挙する 再帰処理を…

【C#】StartsWithを複数の文字列対応する

string クラスに StartsWith という特定の文字列で始まるかどうかをチェックできるメソッドがあります。 使い方はこんな感じです。 string str = "aaaabbbbcccc"; if(str.StartsWith("aaa")) // str が "aaa" から始まるかどうかチェックする { // 一致する …

【C#】文字列を分割するSplitメソッドをより使いやすいよう改善する

C# である文字列を特定の文字で複数の文字列に分割する Split メソッドの利用性を向上するための拡張メソッドの紹介です。 はじめに Split メソッドっは大変便利ですがセパレーターに複数の文字を指定する場合や、文字列をセパレーターとして使う場合以下の…

【C#】プロパティにつけた属性を取得する方法

C#でプロパティにつけた属性を取得する方法の紹介です。自作のクラスなどでプロパティに付与したカスタム属性を取得してその値を利用する方法です。 確認環境 C# 8.0 .NET Core 3.1 VisualStudio 2019 Windows10 コンソールプログラムで動作を確認 実装コー…

【C#】文字列の先頭だけを大文字 or 小文字に変換する

ある文字列の中の1文字だけを大文字・小文字に切り替える方法の紹介です。 C#の標準ライブラリにはこういった操作が存在しないので自分で実装することになります。今回は string クラスの拡張メソッドとして実装します。処理効率は特別な外部ライブラリを使…

C#のバージョンと.NET Framework, .NET Coreの対応表

備忘録的な意味で書き残しておきます。 (1) C#言語バージョンと各ランタイムの関係性 (2) .NET Standardとランラムの関係性 備考 参考資料 (1) C#言語バージョンと各ランタイムの関係性 .NET Framwework と .NET Core がどのC#の言語バージョンにあたるのか…

【C#】2つの変数の中身を入れ替える方法4選

2022-07-30 2つの変数の中身を入れ替える方法を4種類紹介したいと思います。 (1) 昔ながらの方法 (2) Tupleを使う (3) 外部のメソッドで入れ替える (4) 拡張メソッドで入れ替える(値型のみ)方法 ほかにあるかな? 関連記事 (1) 昔ながらの方法 教科書に書い…

【C#】Span<T>構造体を使ったバイナリファイルの読み書き

.NET Core 時代になって Span 構造体が追加されて、FileStream クラスとか BitConverter が標準で対応し始めたのでバイナリデータの効率的な入出力が簡単になってるようなので実験。 条件 バイナリデータで float 型を5件書き込んだファイルを用意する その…

.NET Coreでクリップボードを利用した単一実行可能ファイルを作成する

.NET Core でプログラムを(Windows上で)実行するとGUIDが100件ぶんクリップボードに設定された状態にするコンソールアプリを作成したいと思います。その際に単一実行可能ファイル形式でバイナリを出力する方法と合わせて紹介したいと思います。 今回の記事の…

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

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

【C#】2つのDictionaryを1つにマージする

2020-09-11 2つの Dictionary を 1つの Dictionary にマージして1つにまとめる方法の紹介です。 確認環境 実装コード Linqでマージする 実行速度の比較 確認環境 確認環境は以下の通りです(とはいってもどの環境でも動きます。 .NET Core 3.1 Windows10(Cor…

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

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

【C#】16進数文字列とバイト配列の相互変換

ちょっと何の役に立つか分からないですが、16進数の文字列をバイトの配列に見た目通りに変換する方法です。 long型などの有限長の型を経由しないため基本的に無限長の長さをそのまま扱えます。 変換方法のサンプル 以下のように確実に16進数文字列と分かって…

【Unity】JSONのシリアライズ・デシリアライズの性能比較

Unity環境で使用できる JSON をシリアライズ・デシリアライズできるライブラリとパフォーマンスを調査したいと思います。 はじめに Unity で使用できるJSONライブラリ レギュレーション 確認環境 使用するJSON型 使用するクラスの定義 測定結果 1件を100回シ…

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

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

【はてなブログ】全て記事のURL・タイトル・投稿日を取得する

前回の記事で投稿済みの記事URL一覧をすべて取得するプログラムを書いてみました。 takap-tech.com 今回は、記事のURLのほかに、各記事のタイトルと投稿日時を取得してCSVファイルに出力してみようと思います。 確認環境 C# 8.0 VisualStudio 2019 .NET Core…

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

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

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

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

【はてなブログ】投稿記事のURLを一括取得する

とある事情で自分のブログの投稿した記事の全URLのリストアップが必要になったのでリストアップするためのプログラムをC#で書いてみました。 せっかくなのでコードを公開しようと思います。 サイトマップの形式 まずはサイトマップのデータ形式を確認します…

【C#】文字列や数値をenum型に変換する

ある任意の文字列や数値から特定のEnumに変換する方法です。 確認環境 文字列をEnumに変換する方法 シンボル名文字列から enum 型への変換 数字文字列から enum 型への変換 数値から enum 型への変換 相互変換をサポートするクラス 使い方 EnumUtilクラス 文…

【C#】基本型に範囲チェック機能を追加する

はじめに ある変数が範囲内に収まっていれば新しい値を代入する処理などの「範囲を意識した処理」というものはプログラミングをしているを割と良く出てくる課題です。コードを書くと以下のように記述できます。 // value が 0~10の範囲内なら新しい値を代入…