Regexクラスを使えば、文字列からパターンを高速に抽出できます。 主要なメタ文字は. 任意1文字、* 無制限、+ 1回以上、? 0か1回、^ 先頭、$ 末尾、[]文字セット、() グループ、| 選択。 文字クラスは\d 数字、\w 単語、
続きを読む »C#で文字列がパターンに合うか確かめるならRegex.IsMatchが最速の近道です。 逐語的文字列リテラル@を付ければバックスラッシュの煩わしさを減らせ、オプション引数で大文字小文字や複数行にも柔軟に対応可能です。 入力が不正でも例外は出
続きを読む »C#で正規表現中のダブルクォーテーションを扱うには、文字列リテラル内でバックスラッシュを二重にし、パターン上では\"が必要です。 verbatim文字列なら@"\""と書くと一目で読め、Regex.Escapeを使えばユーザー入力も安全にパ
続きを読む »C#の構造体を初期化するにはnewでデフォルト値を取る、引数付きコンストラクタで任意値を設定する、オブジェクト初期化子でフィールドを個別に指定する、の3パターンが実用的です。 引数なしコンストラクタは宣言できず、未初期化フィールドが残るとコ
続きを読む »C#で正規表現を扱う際は、特殊記号を文字通り扱うためにエスケープが必須です。 一般的にはRegex.Escapeで自動処理するか、逐語的文字列リテラル@""を利用してバックスラッシュを1つに抑えます。 手動で書く場合は* + ? . ^ $
続きを読む »C#の構造体は値型なので通常はコピーが発生しますが、refやin、outで渡すと実体への参照を共有できコピーを避けられます。 refは読み書き、outは初期化目的、inは読み取り専用です。 サイズが大きい構造体で速度やメモリを節約したい場合
続きを読む »C#の正規表現はSystem.Text.RegularExpressions.Regexで扱え、検索・抽出・置換を一行でまとめる頼れる仕組みです。 \dや+などのメタ文字で柔軟にマッチを制御でき、Regex.IsMatchで判定、Match
続きを読む »C#の構造体は値型として設計されており、クラスのように継承階層を持つことができません。 すべての構造体は System.ValueType を経由して object を継承しているものの、ユーザーが独自に別の構造体やクラスを継承したり、派生
続きを読む »C#ではstructをList<T>に格納でき、軽量な値型を大量に扱う際にヒープ割当を避けつつ動的配列の利便性を得られます。 ただし追加時に値全体がコピーされるため、要素を後から変更したい場合はlist[i] = 新値の置換が必
続きを読む »C#で構造体の実際のバイト数を得る主な手段はMarshal.SizeOfとsizeofの2つです。 前者は安全なコードで任意の構造体に使え、後者はunsafeコンテキスト限定ですがコンパイル時定数となる利点があります。 StructLayo
続きを読む »C#でDllNotFoundExceptionが出るのは、ランタイムが指定DLLを検出できないためです。 実行ファイルと同じフォルダー、またはPATHにDLLとその依存DLLを置き、x86とx64をそろえ、DllImportで正しい名前を指
続きを読む »decimal型の値域は約±7.9228×10^28で、この枠を超える演算を行うと必ずOverflowExceptionが発生します。 uncheckedでも無効化できず、checkedで検出してtry-catchで処理するか、事前に入力や
続きを読む »C#でDLLを別フォルダに置くなら、実行前にAppDomain.CurrentDomain.AssemblyResolveでロード先を指定するか、probe privatePath="libs"をApp.configに追記し、ビルド後にDL
続きを読む »整数やDecimalを0で割るとDivideByZeroExceptionが発生し、プログラムは停止します。 除数が0かを事前にチェックするか、try-catchで捕捉しユーザーに適切な対処を促すことで、安全に処理を継続できます。 floa
続きを読む »DLLファイルは実行ファイルと同じディレクトリかbin\Debugやbin\Releaseに置くのが基本です。 別フォルダに分けたい場合はApp.configのprobingでパスを指定するかSetDllDirectoryで検索パスを追加し
続きを読む »DirectoryNotFoundExceptionは指定したパスの途中に存在しないフォルダがあると発生する例外です。 ファイル読み書き前にDirectory.Existsで有無を確認し、見つからなければDirectory.CreateDi
続きを読む »参照できない主因はフレームワークやCPUアーキテクチャの不一致、DLLの配置ミス、ファイル属性のブロック、NuGetパッケージの未復元です。 Visual Studioでターゲットとプラットフォームを合わせ、Copy Localを有効にし、
続きを読む »DataMisalignedExceptionは、CPUが要求するメモリアラインメントに合わないデータへアクセスした際に発生し、主にARM系などで顕著です。 構造体やポインター操作時に起こりやすく、原因はフィールド配置やバイト配列の扱いです
続きを読む »C#でDLLを参照する際は、Visual Studioの「参照の追加」からDLLを選び、コード冒頭にusing 名前空間を加えるだけで、外部ライブラリのクラスやメソッドを自プロジェクト内と同じ感覚で扱えます。 ターゲットフレームワークとバー
続きを読む »