文字列

【C#】暗号化アルゴリズムの種類と安全な実装ポイント

C#では暗号化に「対称鍵」「非対称鍵」「ハッシュ」の三系統があり、実装はSystem.Security.Cryptographyで完結できます。 高速なAES、互換性のRSAやECC、用途特化のSHA-256などを目的と性能で使い分ければ、

続きを読む »
日時

【C#】DateTimeとDateTimeOffsetでタイムゾーンを考慮した時間比較テクニック

日時比較はDateTimeかDateTimeOffsetを使い、比較演算子やCompareToで大小を判定し、等しいかどうかはEqualsまたは==が便利です。 Kindやオフセットを統一しておけば想定外の誤差を防げ、差を求めるなら差分演算

続きを読む »
文字列

【C#】暗号化ライブラリの選び方と実装例―AES・RSA・Bouncy Castleでセキュアなアプリ開発

C#で暗号化するなら、標準のSystem.Security.Cryptographyを軸に、AWS Encryption SDK、Bouncy Castle、UnityCipherなどを用途別に選ぶと安心です。 対称鍵はAES、公開鍵はRS

続きを読む »
日時

【C#】DateTime・DateTimeOffsetとTimeSpanで日時差分を正確に計算する方法

C#で2つの日時の差を得るなら、基本はend - startでTimeSpanを受け取る方法がシンプルです。 ローカルとUTCが混在すると誤差が出るのでDateTime.Kindをそろえるか、タイムゾーン情報を保持するDateTimeOff

続きを読む »
数値

【C#】配列の最大値を求めるLINQとループの高速テクニック

配列の最大値はnumbers.Max()が最短で、using System.Linq;を追加するだけで安全に取得できます。 LINQを使わない場合はint max = numbers[0]; foreach(var n in numbers

続きを読む »
文字列

【C#】AESで安全なファイル暗号化と復号を行う実装手順と鍵管理のコツ

ファイルを安全に扱うなら、まずAESなどの共通鍵方式をAesクラスで実装し、鍵とIVを別保管するのが基本です。 Windows限定の簡易手段としてFile.EncryptやDPAPIも選択でき、公開鍵方式は鍵共有時のみ併用すると効率的です。

続きを読む »
日時

【C#】DateTimeとTimeSpanで時間を簡単に加算・減算する方法と実用サンプル

C#で日時や時間の計算をする最短手段は、DateTimeとTimeSpanを組み合わせる方法です。 DateTimeはAddYearsなどのAdd系メソッドで正負の値を渡すだけで加算も減算も完結し、時間差はSubtractでTimeSpan

続きを読む »
数値

【C#】MinValueとMaxValueで数値型の範囲を確認しよう!サンプルで学ぶ最大値・最小値とオーバーフロー対策

C#では各数値型にMinValueとMaxValueが用意されており、例としてint.MinValueは-2,147,483,648、int.MaxValueは2,147,483,647です。 範囲外の値はオーバーフローを起こすため、演算前

続きを読む »
文字列

【C#】パスワード暗号化のベストプラクティス:PBKDF2とDPAPIで安全に保存する方法

パスワードは平文保存せず、Rfc2898DeriveBytesでPBKDF2ハッシュ化し、一意のソルトと十分な反復回数を持たせると安全性が向上します。 保存時はソルトとハッシュをBase64で連結し、検証時に再計算して比較します。 ローカル

続きを読む »
日時

【C#】DateTime・Stopwatch・Timerで実装するミリ秒単位の時間管理ハンドブック

C#でミリ秒を扱うなら、現在の時刻のミリ秒部分取得はDateTime.Now.Millisecond、経過時間はStopwatch.ElapsedMilliseconds、時間差はTimeSpan.TotalMillisecondsが基本で

続きを読む »
繰り返し文

【C#】foreachとラムダ式で実現する読みやすく安全なコレクション操作入門

ListなどのForEachメソッドにラムダ式を渡すと、従来のforeachより短く書けます。 インラインで要素ごとの処理を定義でき、状態を変えずに記述できるため読みやすさと保守性が向上します。 ただしループ変数をキャプチャする際はスコープ

続きを読む »
繰り返し文

【C#】foreachとforの違いをわかりやすく比較:使い分けポイントとコーディング例

foreachは要素を順に取り出すときに安全で読みやすいが、ループ中にコレクションを変更できず要素を書き換えにくいです。 forはインデックス操作や途中スキップ、逆順など柔軟で要素を直接更新できる一方、境界管理を誤るリスクや読みやすさが下が

続きを読む »
繰り返し文

【C#】foreachの2重ループから抜ける最速テクニック3選

ネストしたforeachから素早く抜けたいなら3つが定番です。 条件を満たしたら外側のループを止めるフラグ+二段階break、ラベル付きgotoで一気に脱出、ループ全体をメソッドに切り出してreturnで終了させる方法です。 可読性と保守性

続きを読む »
例外処理

【C#】FileNotFoundExceptionの原因と対処法—ファイルが見つからないエラーを防ぐポイント

FileNotFoundExceptionは、指定パスにファイルが存在しない状態でアクセスを試みたときに発生し、MessageとFileNameで原因を特定しやすくします。 事前にFile.Existsでチェックするか、try -catch

続きを読む »
繰り返し文

【C#】foreachで多次元配列を効率的に巡回しインデックスを扱う方法

結論、多次元配列をC#のforeachで回すと全要素が一次元に展開され順番に取得されるため、行列などの座標情報は保持されない。 行ごと列ごとに処理したい、あるいはインデックスが必要ならforとGetLengthを組み合わせる方法が確実です。

続きを読む »
変数

【C#】dynamicの使いどころ完全解説:JSON操作・COM連携・プラグイン開発まで

dynamic型は、静的型安全を一時的に手放してでも柔軟さを得たい場面で役立ちます。 代表例はCOM操作やスクリプト連携、スキーマレスなJSON/XML処理、リフレクション代替としてのプラグイン呼び出しなど。 実行時エラーと速度低下を許容で

続きを読む »
例外処理

【C#】DriveNotFoundExceptionの原因と対処法をわかりやすく解説する完全入門

DriveNotFoundExceptionは、存在しないドライブまたはオフラインのネットワークドライブにアクセスした瞬間に投げられる例外です。 設定ファイルやユーザー入力に依存するパスは特に注意が必要で、事前にDirectory.GetL

続きを読む »
変数

【C#】dynamic型キャストの基本と安全な変換・例外対策をやさしく解説

C#のdynamicは型安全性より柔軟性を優先し、キャストやメンバー呼び出しを実行時に評価します。 動的値を他型へキャストすると型不一致でRuntimeBinderExceptionが起こるため、isやasによる確認やtry-catchでの

続きを読む »
変数

【C#】dynamic型からstringへ安全かつ高速に変換する方法と注意点

dynamicに入れた値を文字列へ変換する最短手はConvert.ToString(value)で、nullも空文字にできます。 型が確実なら(string)valueで高速に取り出せますが、失敗時は例外が出るためvalue as stri

続きを読む »
Back to top button