変数

【C#】型推論(var)の落とし穴と注意点:可読性低下とバグリスクへの対処法

varを多用すると型が一目で分からず読み手が迷いやすいです。 推論できない初期化やオーバーロードではコンパイルエラーが起きやすく、バグ発見が遅れがちです。 IDE補助が弱まり、リファクタ時の影響範囲が見えにくくなる点も注意が要ります。 型推

続きを読む »

【C#】typeof と GetType で型名を取得する基本と応用テクニック

C#で型名を取得する最短手段は、静的ならtypeof(型).Name、インスタンスならobj.GetType().Nameです。 名前空間を含めたい場合はFullName、ジェネリックを正確に扱うならAssemblyQualifiedNam

続きを読む »

【C#】暗黙変換・明示キャスト・TryParseまで網羅する型変換の安全な実装術

型変換は安全性と柔軟性を両立させる要所で、暗黙変換は損失ゼロの場合だけ働きます。 精度低下の恐れがある場面では明示キャストを用い、as is Convert TryParseを適宜使い分けると例外を防ぎつつ意図通りにデータを扱えます。 nu

続きを読む »
クラス

【C#】抽象クラスのコンストラクタ完全解説|呼び出し順序・baseの使い方・静的初期化まで

C#の抽象クラスは直接インスタンス化できませんが、コンストラクタを用意すると派生クラス生成時に基底の初期化が行えます。 通常protectedで公開範囲を限定し、派生側からbase(...)で必要な引数を渡します。 オーバーロードや静的コン

続きを読む »
配列&コレクション

【C#】LinkedListの検索を効率化するFind・Contains活用術

C#のLinkedList<T>で要素を検索する場合、先頭または末尾からノードを順にたどる線形探索となり計算量はO(n)です。 標準メソッドはContainsで存在確認、FindとFindLastで最初や最後に一致するノードを取

続きを読む »
ファイル

【C#】JSON文字列をSerialize・Deserializeで高速変換する方法と実用例

JSON文字列はC#でSystem.Text.JsonとNewtonsoft.Jsonが中心となり、Serializeでオブジェクトを文字列化しDeserializeで逆変換できます。 属性でキー名変更やプロパティ除外も柔軟に設定できるため

続きを読む »
配列&コレクション

【C#】LinkedListのRemoveで要素を安全かつ高速に削除する方法と注意点

C#のLinkedList<T>で要素を消す方法は4種類です。 RemoveFirstで先頭、RemoveLastで末尾、Remove(node)で任意ノード、Remove(value)で指定値の先頭一致ノードを削除します。 前

続きを読む »
ファイル

【C#】JSONデータをクラスへ変換するベストプラクティスとSystem.Text.Json・Newtonsoft.Json比較

JSONをC#クラスへ変換するなら、Visual Studioの「JSONをクラスとして貼り付け」やJSON2CSharpでモデルを生成し、System.Text.JsonまたはNewtonsoft.JsonのDeserializeで読み込

続きを読む »
配列&コレクション

【C#】ListとLinkedListの違いをわかりやすく比較!メリット・デメリットと使い分けポイント

List<T>は連続メモリの動的配列なのでランダムアクセスが速い一方、途中への挿入や削除では要素をずらすため時間がかかります。 LinkedList<T>は各ノードが前後を指す双方向リストで挿入削除はO(1)と軽量で

続きを読む »
ファイル

【C#】System.Text.JsonとNewtonsoft.JsonでJSON作成・整形・カスタム変換を極める

C#でJSONを作成するなら標準のSystem.Text.Jsonが高速で軽く、JsonSerializer.Serialize(object)だけで手軽に文字列化でき、WriteIndentedで整形も可能です。 高度な変換や古い環境では

続きを読む »
ファイル

【C#】System.Text.JsonとNewtonsoft.Jsonで学ぶJSONデシリアライズの基本と実践テクニック

C#でJSONを扱うにはSystem.Text.JsonとNewtonsoft.Jsonが主流で、どちらもJsonSerializer.Deserialize<T>やJsonConvert.DeserializeObject&l

続きを読む »
例外処理

【C#】Dictionaryで発生するKeyNotFoundExceptionの原因とTryGetValue・ContainsKeyによる安全な回避方法

C#のKeyNotFoundExceptionはDictionaryなどで登録されていないキーにアクセスすると発生するランタイム例外です。 防ぐには値取得前にTryGetValueで存在確認を行うかContainsKeyでチェックするのが安

続きを読む »
配列&コレクション

【C#】LinkedListをforeachで安全に操作するコツと逆順列挙の実装例

LinkedList<T>はforeachで直感的に要素を列挙できる反面、ループ中に要素を追加・削除するとInvalidOperationExceptionが発生するため要注意です。 変更が必要なら事前に対象ノードを保存してから

続きを読む »
配列&コレクション

【C#】KeyValuePairをDictionaryへ安全に追加する方法と重複回避テクニック

C#でKeyValuePair<TKey,TValue>を追加する場合、ペアを用意してDictionaryならAddやTryAddへ渡し、重複を避けるには事前にContainsKeyで確認するのが基本です。 List系コレクショ

続きを読む »
ファイル

【C#】System.Text.JsonとNewtonsoft.Jsonで学ぶJSONシリアライズの基本と活用法

JSONシリアライズはC#オブジェクトをテキスト化して保存や通信を簡単にする手段です。 標準のSystem.Text.Jsonは軽量で速く、Newtonsoft.Jsonは機能が豊富です。 用途が簡単なら前者、複雑なマッピングやカスタム変換

続きを読む »
配列&コレクション

【C#】KeyValuePairの初期化方法と活用テクニック入門

C#でKeyValuePair<TKey,TValue>を初期化する際はコンストラクターを直接呼び、new KeyValuePair<TKey,TValue>(key, value)と書きます。 プロパティにsett

続きを読む »
ファイル

【C#】JSONとDictionaryを高速かつ柔軟に相互変換する方法

JSONとDictionaryの相互変換はSystem.Text.Json.JsonSerializerかNewtonsoft.Json.JsonConvertを使えば一行で済みます。 文字列キーなら追加設定は不要、複雑な型はカスタムコンバ

続きを読む »
配列&コレクション

【C#】KeyValuePair×List活用術:順序を保ちつつキーと値を操作するベストプラクティス

List<KeyValuePair<TKey,TValue>>は、要素の追加順を保持したままキーと値を扱えるコレクションです。 Addで登録し、FindやRemoveAllで検索・削除、Sortでキーや値基準の並べ替

続きを読む »
配列&コレクション

【C#】KeyValuePairからDictionaryへ変換する最速テクニックと重複キー対策

KeyValuePair<TKey,TValue>の一覧はDictionaryコンストラクターに渡すか、LINQのToDictionary(k=>k.Key, v=>v.Value)を使えばすぐ辞書へ変換できます。

続きを読む »
Back to top button