型チェックにはisとパターンマッチングが最速で安全、キャストを兼ねたasはnull判定前提で例外を防げます。 静的にはジェネリック制約でミスを排除し、動的にはtypeofやGetTypeで判定可能です。 用途で使い分ければ可読性と実行時安全
続きを読む »C#のnewはオブジェクト生成と初期化を一手に担い、メモリ確保とコンストラクター呼び出しを自動で行います。 クラス、構造体、配列、匿名型、ジェネリックコレクションなどを簡潔に作成でき、型安全に扱いを開始できます。 生成した参照を失えばガベー
続きを読む »C#で可変長コレクションが必要なときは、new List<T>()でジェネリックリストを生成すると追加・削除・検索が手軽に行えます。 コンストラクターに初期容量や既存コレクションを渡してメモリや初期値を調整でき、LINQと組み合
続きを読む »結論、C#でメモリ解放にdeleteは不要です。 newで生成したオブジェクトはCLRのガベージコレクタが自動回収し、手動管理は不要になります。 ただしファイルハンドルなどアンマネージド資源は自動回収されないためIDisposableを実装
続きを読む »DateTimeはC#で日付と時刻を扱う値型です。 new DateTime(年, 月, 日)などのコンストラクタで厳密な日時を生成でき、追加引数で時分秒やDateTimeKindを指定できます。 初期値にはDateTime.MinValu
続きを読む »MethodAccessExceptionはC#でアクセス権のないメソッドを呼び出した瞬間に発生するランタイム例外です。 原因はprivateなどの非公開メソッドやセキュリティで保護されたAPIへの直接呼び出し、リフレクションでの参照ミス、
続きを読む »MemberAccessExceptionは、C#でリフレクションやアクセス修飾子の制限を越えてフィールド・プロパティ・メソッドに触れようとした際に発生する例外です。 privateメンバーの参照、抽象クラスのインスタンス化、引数なしコンス
続きを読む »C#のLINQなら配列やListなどの文字列コレクションに対し、Where(s => s.Contains("key", StringComparison.OrdinalIgnoreCase))のようにラムダ式で意図を直感的に記述でき
続きを読む »C#のLINQを使うと、配列に対する検索・変換・並べ替え・集計などをSQL風に一括記述でき、従来のforループよりコードが短く保守しやすくなります。 さらに遅延実行により必要な要素だけを効率良く取得できるため、メモリと処理時間の両面でメリッ
続きを読む »LINQのクエリは列挙が始まるまで実行されず、各要素を要求された瞬間に処理が走るため、不要な計算やメモリ確保を避けられます。 ToList()などで結果をコレクション化すると即時評価になり、以降は再計算されません。 データソース変更の影響と
続きを読む »LINQの条件分岐はWhereで絞り込み、Selectで形を変え、AnyやFirstOrDefaultで存在確認や取得を瞬時に行う流れが基本です。 ラムダ式に論理演算子を重ねれば複雑な条件も一行で書け、動的に組み立てる場合はFunc<
続きを読む »LINQの集計はCount,Sum,Average,Min,Maxで単純統計を一行で取り、GroupByと組み合わせればカテゴリ別集計も容易に扱えます。 複雑な要約はAggregateで自由に計算でき、ネイティブループより短く可読性が高く、
続きを読む »C#でListをJSONへ変換するなら標準のJsonSerializer.Serializeが最速かつ追加依存なしで済みます。 JsonSerializerOptionsを添えればインデント整形やUnicodeエスケープ抑制も簡単に行え、日
続きを読む »C#で対数計算をするなら自然対数はMath.Log(x)、任意の底はMath.Log(x, b)で完結します。 整数値の底2対数の整数部のみが欲しい場面ではBitOperations.Log2が高速です。 0以下の入力はNaNを返すので必ず
続きを読む »MissingMethodExceptionは実行時に呼び出そうとしたメソッドのシグネチャが見つからないときに発生します。 ライブラリのバージョン差異、メソッド名や引数変更、アクセス修飾子の変更が主因です。 参照DLLをそろえ再ビルドし、古
続きを読む »MissingMemberExceptionは、実行時に存在しないメンバーへアクセスした瞬間に発生する例外です。 リフレクションや古いDLLとの差し替えで起きやすく、該当メンバーの有無を事前確認し、バージョンを合わせることで回避できます。
続きを読む »MissingFieldExceptionは実行時にリフレクションや旧バージョンのDLLを通して存在しないフィールドへアクセスした瞬間に発生し、フィールド名の綴りや参照アセンブリを最新化することで回避できます。 MissingFieldEx
続きを読む »C#のLINQではクエリ内で使う変数が結果の可読性と性能を左右します。 from句の範囲変数は各要素を示し、let句で派生値を一時保存できます。 メソッド構文ならvar推論で型を省略でき、Select内で匿名型を返すと複数値をまとめられます
続きを読む »C#のLINQではToListやToArrayなどで簡単にコレクションを別形式へ変換でき、辞書化にはToDictionary、グループ化にはToLookupが役立ちます。 AsEnumerableでクエリをメモリに移し、Selectで匿名型
続きを読む »