例外処理

【C#】InvalidFilterCriteriaExceptionの原因・発生条件と対処法をわかりやすく解説

InvalidFilterCriteriaExceptionはリフレクションでメンバー検索を行う際、フィルター引数が不正なときに発生します。 BindingFlagsの組み合わせミスやデリゲートシグネチャの不一致が主因で、引数を検証し、tr

続きを読む »
例外処理

【C#】InvalidCastExceptionの原因と解決策まとめ:キャスト失敗を防ぐ実践ポイント

InvalidCastExceptionは互換性のない型へキャストした瞬間に発生し、実行時にプログラムを停止させます。 対策は事前にisやasで型確認し、ConvertやToStringなど安全な変換メソッドを使い、ボックス化解除時は元の型

続きを読む »
例外処理

【C#】InsufficientMemoryExceptionの原因と対策:32ビット制限・メモリリーク・巨大オブジェクトを一挙解説

メモリ確保に失敗するとInsufficientMemoryExceptionが投げられます。 主な要因は32ビット版のアドレス空間制限、メモリリーク、巨大オブジェクトです。 64ビット化やデータ構造の見直し、プロファイラでのリーク検出が対策

続きを読む »
ファイル

【C#】INIファイルの読み込み方法を最短でマスターするベストプラクティス

結論、C#でINIファイルを扱うならNuGetのIniParserが最短ルートです。 数行でセクションとキーを指定して値を取得でき、Unicodeやコメントも自然に扱えます。 Win32 APIのGetPrivateProfileStrin

続きを読む »
例外処理

【C#】FormatExceptionの原因を完全理解!TryParseと例外処理で安全に型変換する方法

C#のFormatExceptionは、文字列を数値や日付などに変換する際に形式が合わないと発生する例外です。 ユーザー入力や外部データが期待形式か確認せずにParseすると起きやすいので、TryParseやDateTime.TryPars

続きを読む »
メソッド

【C#】Funcとparamsで可変長引数をスマートに扱う方法と実践例

C#のFuncは戻り値を持つデリゲートで引数は最大16個に固定です。 可変長引数を扱いたい場合はparams付きメソッドを作り、それをFunc<int[], TReturn>などでラップすると扱いやすくなります。 ラムダ式を挟ん

続きを読む »
繰り返し文

【C#】foreachで配列を安全かつ効率的にループする基本と活用テクニック

foreachは配列の要素を先頭から順に読み取る最も手軽な方法です。 インデックスを意識せず要素にアクセスでき、境界チェックも不要なのでバグを減らせます。 ループ中に要素追加や削除はできないため構造を変えたい場合はforが向きます。 読み取

続きを読む »
繰り返し文

【C#】foreachで最初の要素だけをスマートに処理する3つの実装パターン

foreachには先頭要素を特定する構文がないため、最初だけ別処理したいときはFirst()で取り出し残りをSkip(1)で回す、またはfor文でインデックス0を処理し1から走査する方法が手早くシンプルです。 foreachと先頭要素の処理

続きを読む »
繰り返し文

【C#】foreachループで最後の要素をスマートに判定する3つのテクニック

foreachでは末尾を自動取得できないため、手早い方法はcollection.Last()と現在要素を比較する手法です。 ただし呼ぶたびに列挙が走る点がネックなので、Select((v,i)=>…)でインデックスを受け取りCount

続きを読む »
数値

【C#】ifで最大値を求める最速テクニックとMath.Max・LINQ比較

C#で最大値を求めるなら、2つだけならMath.Max、複数ならLINQの配列.Max()が最短です。 ループにifを組み合わせcurrent < xで更新していく方法は、判定条件を変えるなど細かく制御したい場面に向きます。 型自体の

続きを読む »
文字列

【C#】AES暗号化・復号化の実装手順と鍵管理のポイントをわかりやすく解説

C#でAES暗号化を使うと、対称鍵方式の強力なセキュリティを簡潔に実装できるため、通信やファイル保存の機密性を高められます。 Aes.Create()で鍵とIVを生成し、CreateEncryptorとCreateDecryptorを用いて

続きを読む »
日時

【C#】DateTimeの時間フォーマット完全理解:標準・カスタム指定と活用テクニック

C#で日時を任意の形で表示するにはDateTimeやDateTimeOffsetのToStringに書式指定文字列を渡します。 標準書式"G"などは地域設定に合わせ、カスタム書式"yyyy/MM/dd HH:mm:ss"なら固定形で出力。

続きを読む »
文字列

【C#】SHA-256で文字列を安全にハッシュ化する方法とソルト実装のポイント

SHA-256は一方向ハッシュ関数です。 C#ではSHA256.Create()とComputeHashで32バイトの固定長値を取得できます。 同じ入力は常に同じ結果になるためパスワードにはソルトを加え、レインボーテーブル対策を取るのが定番

続きを読む »
文字列

【C#】MD5暗号化の実装手順とSHA-256への移行ポイント

MD5はC#で手軽にSystem.Security.Cryptography.MD5.Create()を使い、文字列を128ビットのハッシュへ変換できますが、衝突が発見されているためパスワードや機密データの保護用途には不向きです。 整合性確

続きを読む »
日時

【C#】DateTimeによる日付比較の基本とタイムゾーン対応テクニック

C#ではDateTime同士をそのまま==, <, >などで比べられ、DateTime.CompareやCompareToも同様に負値・0・正値で結果を返します。 日付だけを見たい場合はDateプロパティで時刻を切り落とすのが安

続きを読む »
クラス

【C#】構造体コピーを完全攻略:浅いコピーと深いコピーの違いと安全な実装術

C#の構造体は値型なので代入やメソッド引数で丸ごとコピーされ、コピー後は互いに独立です。 ただしフィールドに参照型を含む場合は参照先を共有するため、深い複製が必要なら手動で新しいインスタンスを作成する必要があります。 サイズが大きい構造体は

続きを読む »
クラス

【C#】構造体とクラスの違い・パフォーマンス比較と使い分けポイント

値だけを扱い短命で小さく不変ならstructが適し、高頻度コピーでもヒープ割当を避けられるため軽量です。 継承や状態共有、サイズが大きく寿命が長いデータにはclassを選び、参照渡しでメモリ負荷を抑えつつ機能拡張も柔軟です。 基本 構造体と

続きを読む »
ファイル

【C#】構造体をJSONに変換する方法と逆変換のコツ

C#では構造体もJsonSerializer.SerializeでそのままJSON文字列へ変換でき、JsonSerializer.Deserialize<StructType>で復元できます。 プロパティをpublicのget/

続きを読む »
文字列

【C#】AESとRSAで学ぶ暗号化・復号化の基本と安全なキー管理

C#で機密データを守るには、対称鍵方式のAesと非対称鍵方式のRSAを使うケースが主流です。 Aesは同じ鍵とIVで高速に暗号化と復号が行え、RSAは公開鍵で暗号化し秘密鍵で復号できるため鍵共有を安全に行えます。 シーンに合わせてアルゴリズ

続きを読む »
Back to top button