C#でINIファイルへ値を書き込む最短手段は、Windows API WritePrivateProfileStringをP/Invokeで呼び出すか、NuGetのIniParserなどを使う方法です。 セクション・キー・値を渡すだけで保存
続きを読む »C#で文字列の長さを知りたいときはLengthを確認すれば完了です。 多言語絵文字や異体字などサロゲートペアを含む場合は、new StringInfo(text).LengthInTextElementsで実際の文字数を数えると安全です。
続きを読む »InsufficientExecutionStackExceptionは.NET実行時にスタック領域が不足した瞬間に投げられる例外です。 主因は無限再帰や極端に深い再帰で、catchはほぼ効かないため再帰深度の制限やループへの書き換えで防ぐ
続きを読む »C#でIndexOutOfRangeExceptionは、配列やListなどのインデックスが0以上要素数未満という有効範囲から外れた瞬間に発生し、プログラムを停止させます。 発生を防ぐにはLengthやCountで事前に範囲を確認するか、f
続きを読む »C#のHttpListenerExceptionは、HttpListenerがポートの占有や権限不足、URL形式ミスなどでリクエスト受付に失敗した時に投げられます。 管理者権限起動、未使用ポート選択、listener.Prefixesの見直
続きを読む »HostProtectionExceptionは、.NETホストが危険とみなす操作をアプリが実行しようとすると発生する例外です。 SQL Server CLRなど制限付き環境でスレッド生成、ソケット通信、ファイルI/Oを呼ぶと出やすいです。
続きを読む »C#の文字列補間は、先頭に$を付けた文字列に変数や式を{}で直接埋め込む仕組みです。 可読性が高まり+連結やString.Formatより高速になり、複雑なロジックも簡潔に記述できます。 中括弧を文字として出したい時は{{と}}でエスケープ
続きを読む »C#ではDateTimeのAddYears AddMonths AddDaysなどに正負の値を渡すだけで日時を前後へ動かせます。 さらにTimeSpanを使いnow + spanやend - startと書けば演算子で加算減算や差分取得も簡
続きを読む »複数行文字列を扱うなら、最も手軽なのは"""で囲むRaw文字列リテラル(C# 11以降)で、改行やエスケープを気にせず記述できます。 従来は先頭に@を付けるVerbatim文字列で改行を直接入れるか+ Environment.NewLine
続きを読む »DateTime型はToStringに書式指定子を渡すだけで和暦、ISO8601、年‐月‐日 時:分:秒などを自在に整形できます。 標準指定子は短く、カスタム指定子は自由度が高いので場面に応じた表示が簡単です。 ログやUIの統一、並べ替えに
続きを読む »C#なら標準のSystem.IO.Compression.GZipStreamで.gzを素早く展開できます。 FileStreamで圧縮ファイルを開き、new GZipStream(fs, CompressionMode.Decompres
続きを読む »標準のSystem.IO.Compression.GZipStreamを使えば数行でファイルやストリームを高速かつ可逆に圧縮・展開でき、外部ライブラリ不要で配布サイズも増えません。 読み書きはCopyToで完結し、非同期版やSpan<
続きを読む »Dictionary<TKey, TValue>はジェネリックで型安全、ボクシングが不要なぶん高速で、存在しないキーを読むとKeyNotFoundExceptionになります。 一方Hashtableは非ジェネリックで型変換コス
続きを読む »InvalidTimeZoneExceptionは、TimeZoneInfo.FindSystemTimeZoneByIdに渡したIDがOSに存在しないか破損しているときに発生します。 WindowsとLinuxでIDが異なる点が主な落とし
続きを読む »InvalidProgramExceptionはCLRが壊れたILや不正なメタデータを検出した際に発生する例外です。 ビルド設定のx86/x64不一致、破損DLL、動的コード生成バグなどが主因となるため、プラットフォーム統一、参照DLLの置
続きを読む »InvalidOperationExceptionは、メソッド呼び出し時に対象オブジェクトの状態が操作に適さないときに発生する例外です。 UIスレッド外からのコントロール更新、列挙中のコレクション変更、Nullable<T>のn
続きを読む »C#の文字列補間式はC#6.0で追加され、$"{}"構文によって可読性と保守性が大きく向上します。 C#10ではraw文字列リテラルと併用しやすくなり、C#11では書式指定が強化されました。 従来のstring.Formatよりシンプルでエ
続きを読む »InvalidFilterCriteriaExceptionはリフレクションでメンバー検索を行う際、フィルター引数が不正なときに発生します。 BindingFlagsの組み合わせミスやデリゲートシグネチャの不一致が主因で、引数を検証し、tr
続きを読む »InvalidCastExceptionは互換性のない型へキャストした瞬間に発生し、実行時にプログラムを停止させます。 対策は事前にisやasで型確認し、ConvertやToStringなど安全な変換メソッドを使い、ボックス化解除時は元の型
続きを読む »