varを多用すると型が一目で分からず読み手が迷いやすいです。 推論できない初期化やオーバーロードではコンパイルエラーが起きやすく、バグ発見が遅れがちです。 IDE補助が弱まり、リファクタ時の影響範囲が見えにくくなる点も注意が要ります。 型推
続きを読む »C#で型名を取得する最短手段は、静的ならtypeof(型).Name、インスタンスならobj.GetType().Nameです。 名前空間を含めたい場合はFullName、ジェネリックを正確に扱うならAssemblyQualifiedNam
続きを読む »型変換は安全性と柔軟性を両立させる要所で、暗黙変換は損失ゼロの場合だけ働きます。 精度低下の恐れがある場面では明示キャストを用い、as is Convert TryParseを適宜使い分けると例外を防ぎつつ意図通りにデータを扱えます。 nu
続きを読む »C#の抽象クラスは直接インスタンス化できませんが、コンストラクタを用意すると派生クラス生成時に基底の初期化が行えます。 通常protectedで公開範囲を限定し、派生側からbase(...)で必要な引数を渡します。 オーバーロードや静的コン
続きを読む »C#のLinkedList<T>で要素を検索する場合、先頭または末尾からノードを順にたどる線形探索となり計算量はO(n)です。 標準メソッドはContainsで存在確認、FindとFindLastで最初や最後に一致するノードを取
続きを読む »JSON文字列はC#でSystem.Text.JsonとNewtonsoft.Jsonが中心となり、Serializeでオブジェクトを文字列化しDeserializeで逆変換できます。 属性でキー名変更やプロパティ除外も柔軟に設定できるため
続きを読む »C#のLinkedList<T>で要素を消す方法は4種類です。 RemoveFirstで先頭、RemoveLastで末尾、Remove(node)で任意ノード、Remove(value)で指定値の先頭一致ノードを削除します。 前
続きを読む »JSONをC#クラスへ変換するなら、Visual Studioの「JSONをクラスとして貼り付け」やJSON2CSharpでモデルを生成し、System.Text.JsonまたはNewtonsoft.JsonのDeserializeで読み込
続きを読む »List<T>は連続メモリの動的配列なのでランダムアクセスが速い一方、途中への挿入や削除では要素をずらすため時間がかかります。 LinkedList<T>は各ノードが前後を指す双方向リストで挿入削除はO(1)と軽量で
続きを読む »C#でJSONを作成するなら標準のSystem.Text.Jsonが高速で軽く、JsonSerializer.Serialize(object)だけで手軽に文字列化でき、WriteIndentedで整形も可能です。 高度な変換や古い環境では
続きを読む »C#でJSONを扱うにはSystem.Text.JsonとNewtonsoft.Jsonが主流で、どちらもJsonSerializer.Deserialize<T>やJsonConvert.DeserializeObject&l
続きを読む »C#のKeyNotFoundExceptionはDictionaryなどで登録されていないキーにアクセスすると発生するランタイム例外です。 防ぐには値取得前にTryGetValueで存在確認を行うかContainsKeyでチェックするのが安
続きを読む »LinkedList<T>はforeachで直感的に要素を列挙できる反面、ループ中に要素を追加・削除するとInvalidOperationExceptionが発生するため要注意です。 変更が必要なら事前に対象ノードを保存してから
続きを読む »C#でKeyValuePair<TKey,TValue>を追加する場合、ペアを用意してDictionaryならAddやTryAddへ渡し、重複を避けるには事前にContainsKeyで確認するのが基本です。 List系コレクショ
続きを読む »JSONシリアライズはC#オブジェクトをテキスト化して保存や通信を簡単にする手段です。 標準のSystem.Text.Jsonは軽量で速く、Newtonsoft.Jsonは機能が豊富です。 用途が簡単なら前者、複雑なマッピングやカスタム変換
続きを読む »C#でKeyValuePair<TKey,TValue>を初期化する際はコンストラクターを直接呼び、new KeyValuePair<TKey,TValue>(key, value)と書きます。 プロパティにsett
続きを読む »JSONとDictionaryの相互変換はSystem.Text.Json.JsonSerializerかNewtonsoft.Json.JsonConvertを使えば一行で済みます。 文字列キーなら追加設定は不要、複雑な型はカスタムコンバ
続きを読む »List<KeyValuePair<TKey,TValue>>は、要素の追加順を保持したままキーと値を扱えるコレクションです。 Addで登録し、FindやRemoveAllで検索・削除、Sortでキーや値基準の並べ替
続きを読む »KeyValuePair<TKey,TValue>の一覧はDictionaryコンストラクターに渡すか、LINQのToDictionary(k=>k.Key, v=>v.Value)を使えばすぐ辞書へ変換できます。
続きを読む »