C#樹林– category –
プログラミング言語のC#を勉強したときのノートです。
-
C#樹林
【C#】LINQのElementAtとElementAtOrDefault:指定位置(インデックス)の要素を取得する方法
LINQクエリ結果へのインデックスアクセス C#で配列やList<T>を扱う場合、array[0]のようにインデクサ([])を使って特定の位置にある要素にアクセスするのが一般的です。 しかし、LINQのメソッド(OrderByやWhereなど)が返す結果はIEnumerable<T... -
C#樹林
【C#】LINQのLastとLastOrDefault:最後の要素を取得する方法と例外の回避
コレクションの末尾要素へのアクセス 配列やリストなどのコレクションを扱う際、「リストの最後に追加されたデータ(最新のデータ)を取得したい」や、「特定の条件に合致するもののうち、一番最後のものを探したい」という場面は頻繁に発生します。 LINQ... -
C#樹林
【C#】LINQのFirstとFirstOrDefault:最初の要素を取得する方法と例外リスクの回避
コレクションの先頭要素へのアクセス C#で配列やリストなどのコレクションを扱う際、「最初の1件だけを取得したい」あるいは「特定の条件に合致する最初の1件を探したい」という場面は頻繁に発生します。 LINQ(Language Integrated Query)は、この目的の... -
C#樹林
【C#】LINQのSkipとSkipWhile:シーケンスの先頭要素を無視して残りを取得する方法
指定位置まで要素を読み飛ばす コレクション操作において、「先頭の5件はヘッダー情報なので無視したい」や「特定の条件を満たすまでの待機データは不要」といったケースがあります。 C#のLINQには、シーケンスの先頭から特定の要素を無視(スキップ)し、... -
C#樹林
【C#】LINQのTakeとTakeWhile:シーケンスの先頭から要素を抽出する方法と違い
シーケンス先頭からのデータ取得 C#のLINQ(Language Integrated Query)には、コレクションから特定の条件でデータを抽出するメソッドが多数用意されています。その中でも、リストや配列の「先頭から」特定の範囲を取得したい場合に利用されるのが Take ... -
C#樹林
【C#】LINQ Selectメソッドでデータを変換・射影する方法:匿名型やインデックスの活用
データの「変換(射影)」 C#で配列やList<T>などのコレクションを扱う際、「すべての数値を2倍にしたい」「オブジェクトのリストから、特定のプロパティだけを抜き出したい」「計算結果を含む新しい形式のデータを作りたい」といった変換処理は頻繁... -
C#樹林
【C#】LINQのWhereメソッドで条件に一致する要素を抽出する方法:インデックス活用まで
コレクションのフィルタリング処理 C#で配列やList<T>などのコレクションから、特定の条件を満たす要素だけを取り出したい場合、LINQ(Language Integrated Query)のWhereメソッドを使用するのが最も標準的な方法です。 foreachループとif文を組み... -
C#樹林
【C#】null許容参照型の導入ガイド:NullReferenceExceptionを防ぐための設定と実装
参照型における「null」の問題 C# 8.0より前では、stringやクラスなどの参照型は、デフォルトでnullを許容していました。そのため、開発者が意図せずnullの状態の変数にアクセスしてしまい、実行時にNullReferenceException(ぬるぽ)が発生するというバグ... -
C#樹林
【C#】null合体割り当て演算子(??=)の使い方:変数がnullの時だけ値を代入する
条件付き代入の簡略化 プログラミングにおいて、「変数がまだ初期化されていない(nullである)場合に限り、初期値やデフォルト値を代入したい」というロジックは頻繁に登場します。 従来、この処理はif文を使用して記述されてきましたが、C# 8.0で導入さ... -
C#樹林
【C#】null条件演算子(?.)とnull合体演算子(??)の組み合わせ:安全なプロパティアクセスとデフォルト値
nullチェックとデフォルト値設定の簡略化 C#でオブジェクトのプロパティにアクセスする際、そのオブジェクト自体がnullである可能性があります。また、プロパティの値を取得できたとしても、その値がnullであれば、代わりに「未設定」や「不明」といったデ... -
C#樹林
【C#】null条件演算子(?.)の使い方:NullReferenceExceptionを防ぐ安全なメンバーアクセス
NullReferenceException の回避とコードの簡略化 オブジェクトが null である可能性がある場合、そのオブジェクトのプロパティやメソッドにアクセスしようとすると、System.NullReferenceException が発生し、アプリケーションがクラッシュします。 これを... -
C#樹林
【C#】null合体演算子(??)とnull合体割り当て(??=)の使い方:null判定を簡潔に記述する
nullチェックの簡略化 プログラミングにおいて、「変数が null であればデフォルト値を使い、そうでなければ変数の値をそのまま使う」というロジックは頻繁に登場します。 例えば、ユーザーのニックネームが未設定(null)の場合に "Guest" という文字列を... -
C#樹林
【C#】null許容値型 (Nullable Value Types) の基本:int? の宣言から ?? 演算子、パターンマッチングまで
値型における null の扱い C#において、int、double、bool、DateTimeといった「値型(Value Type)」は、原則として必ず何らかの値を持ち、nullを代入することができません。 しかし、データベースのテーブルで数値カラムがNULLを許可している場合や、API... -
C#樹林
【C#】列挙型(enum)で複数の状態を管理する:Flags属性とビット演算の活用
列挙型で「複数の選択肢」を同時に扱う 通常、列挙型(enum)は「待機中」「実行中」「完了」のように、変数がいずれか一つの状態しか取らない場合に使用されます。 しかし、ファイルシステムの権限(読み取り、書き込み、実行)や、ユーザーの役割(管理... -
C#樹林
【C#】列挙型(enum)と文字列を相互に変換する方法:ToString, Parse, TryParseの使い分け
列挙型と文字列の変換 アプリケーション開発において、ログ出力やUIへの表示のために「列挙型の値を文字列に変換したい」場合や、逆に設定ファイルやAPIから受け取った文字列を「列挙型に変換して処理したい」という場面は頻繁に発生します。 C#では、これ... -
C#樹林
【C#】列挙型(enum)と数値(int)を相互に変換する方法:キャストと存在チェック
列挙型と数値の互換性 C#の列挙型(enum)は、内部的には整数(デフォルトではint)として扱われています。データベースへの保存時や、外部APIとの通信時など、可読性の高いenumを数値に変換したり、逆に数値からenumに戻したりする操作は頻繁に発生します... -
C#樹林
【C#】列挙型(enum)の全メンバーを配列として取得する方法:Enum.GetValuesの活用
列挙型の全要素取得 C#でenum(列挙型)を使用する際、定義されているすべての選択肢を一覧表示したい場合があります。例えば、コンボボックス(ドロップダウンリスト)の選択肢を生成したり、すべてのステータスに対して一括処理を行ったりするケースです... -
C#樹林
【C#】列挙型(enum)の定義と使い方:定数をグループ化してコードの可読性を高める
列挙型(enum)とは プログラミングにおいて、「ステータス(待機中、実行中、完了)」や「カテゴリ(食品、家電、書籍)」のように、関連する定数のセットを扱いたい場面は頻繁にあります。 これらを単なる数値(0, 1, 2)や文字列("Pending", "Running"... -
C#樹林
【C#】オブジェクトの複製:MemberwiseCloneメソッドによるシャローコピー(浅いコピー)の実装
オブジェクトの「代入」と「複製」の違い C#において、クラス(参照型)の変数を別の変数に代入した場合、コピーされるのはオブジェクトの実体ではなく「参照(メモリアドレス)」のみです。 var original = new MyClass(); // 変数 original が保持してい... -
C#樹林
【C#】匿名型(Anonymous Type)入門:クラス定義なしで一時的なオブジェクトを作成する方法
クラス定義を省略する「匿名型」 C#でデータをまとめるオブジェクトを作成するには、通常、まずclassやstructを定義し、その設計図に基づいてインスタンスを生成します。 しかし、LINQのクエリ結果を受け取る場合や、メソッド内だけで使う一時的なデータ構... -
C#樹林
【C#】構造体(struct)の定義とクラスとの違い:軽量なデータ構造を作る方法
クラスと構造体の使い分け C#には、独自のデータ型を定義する方法として「クラス(class)」と「構造体(struct)」の2つがあります。 クラスが「参照型(Reference Type)」であり、柔軟な継承や多態性を持つリッチなオブジェクト指向のために使われるの... -
C#樹林
【C#】静的クラス(static class)の定義:インスタンス化できないユーティリティクラスの作り方
静的クラスとは:newできないクラス C#のクラスは通常、newキーワードを使ってインスタンス(オブジェクト)を生成してから使用します。しかし、数学関数(System.Math)やコンソール操作(System.Console)のように、データを保持せず、機能(メソッド)... -
C#樹林
【C#】クラスの継承(Inheritance):基本クラスのメンバーを派生クラスで再利用する方法
継承とは:コードの再利用と拡張 オブジェクト指向プログラミングにおいて「継承(Inheritance)」は、既存のクラス(親クラス)の機能やデータ構造を受け継ぎながら、新しいクラス(子クラス)を定義する仕組みです。 継承を利用することで、共通のフィー... -
C#樹林
【C#】コンストラクタのオーバーロードと「this」による呼び出し:初期化ロジックの共通化
オブジェクト初期化の多様性 クラスや構造体を設計する際、インスタンスの生成方法(初期化のパターン)を複数提供したい場合があります。例えば、すべての値を個別に指定して生成する場合もあれば、一つの値を基準に残りを自動設定して生成する場合もあり... -
C#樹林
【C#】コンストラクタの定義と活用:クラスの初期化を正しく行う方法
クラスとコンストラクタ C#のクラス(class)は、オブジェクト指向プログラミングにおける「設計図」です。この設計図から実際の「モノ(インスタンス)」を生成する際、そのオブジェクトが最初から正しいデータ(名前やIDなど)を持っている状態にするた... -
C#樹林
【C#】コンストラクタの基本:newキーワードとクラスの初期化メソッド
クラスの「コンストラクタ」とは C#の「クラス(class)」は、オブジェクト(モノ)を作るための「設計図」です。この設計図からnewキーワードを使って実際の「オブジェクト(インスタンス)」を生成する際、そのオブジェクトが使用可能な状態になるように... -
C#樹林
【C#】式形式のメンバー(Expression-Bodied Members):=>でメソッドやプロパティを簡潔に書く方法
{ return ...; } の冗長性 C#のクラスでメソッドやプロパティを定義する際、その処理内容が非常に単純な場合があります。 例えば、privateなフィールドの値を返すだけのgetアクセサーや、2つのプロパティを足した結果を返すだけのメソッドなどです。 // 従... -
C#樹林
【C#】paramsキーワード:可変長引数のメソッドを定義する方法
メソッドの引数と「可変長」 C#でメソッドを定義する際、通常は引数の数と型を固定します(例: int Calulate(int a, int b))。 しかし、時には「引数が2個の場合も、5個の場合も、10個の場合も、すべて同じメソッドで処理したい」という要求があります。... -
C#樹林
【C#】メソッドのオーバーロード(Overloading):同名で引数が異なるメソッドを定義する方法
メソッドのオーバーロードとは C#のクラス設計において、同じ名前を持ちながら、引数(パラメータ)の構成が異なるメソッドを複数定義する技術を「メソッドのオーバーロード(Overloading)」と呼びます。 例えば、Console.WriteLine()メソッドは、WriteLi... -
C#樹林
【C#】クラスの「メソッド」を定義する方法:振る舞いを実装する基本
クラスとメソッド(振る舞い) C#の「クラス(class)」は、データ(状態)と振る舞い(アクション)を一つにまとめた設計図です。 データ(状態): privateな「フィールド」やpublicな「プロパティ」で表されます。(例: string Name, int Health) 振る...