C#樹林– category –
プログラミング言語のC#を勉強したときのノートです。
-
C#樹林
【C#】LINQのMinとMaxメソッド:コレクションの最小値・最大値を求める方法と計算式の活用
コレクション内の最小値・最大値の取得 データの分析や処理において、「リストの中で最も高い数値」や「最も古い日付」を取得する操作は頻繁に行われます。 C#のLINQ(Language Integrated Query)が提供するMinおよびMaxメソッドを使用すると、単純な数値... -
C#樹林
【C#】LINQのSumメソッド:配列やリストの合計値を算出する方法と応用
コレクションの集計処理 業務アプリケーションにおいて、売上の合計、テストの総得点、在庫数のカウントなど、データの「合計値」を求める処理は頻出します。 foreachループを使用して加算処理を実装することも可能ですが、C#のLINQ(Language Integrated ... -
C#樹林
【C#】LINQのCountメソッド:全要素数や条件に一致する要素数を取得する方法
コレクションの要素数を数える C#で配列やリストなどのコレクションを扱う際、そこに「データが何件あるか」を知ることは最も基本的な操作の一つです。 配列には.Lengthプロパティ、List<T>には.Countプロパティがありますが、LINQ(Language Integr... -
C#樹林
【C#】LINQのPrependとAppend:シーケンスの先頭・末尾に要素を追加する方法
コレクションへの要素追加(非破壊的アプローチ) C#で配列やリストに要素を追加する場合、List<T>.Addメソッドを使用するのが一般的です。しかし、この方法は「元のリストを直接変更する」ため、元のデータを保持したまま新しいシーケンスを作りた... -
C#樹林
【C#】LINQのOfTypeメソッド:コレクションから特定の型の要素だけを安全に抽出する方法
異なる型が混在するコレクションの処理 C#は静的型付け言語ですが、object[](オブジェクト配列)や、古いArrayList、あるいは基底クラスのリストなど、異なるデータ型の要素が混在しているコレクションを扱う場面が存在します。 そのようなコレクションか... -
C#樹林
【C#】LINQでデータを並べ替える:OrderByとThenByによる複数条件ソート
データの並べ替え(ソート) 配列やリストなどのデータを扱う際、「数値を小さい順に並べる」「日付の新しい順に表示する」といった並べ替え(ソート)は、最も基本的かつ重要な操作の一つです。 C#のLINQ(Language Integrated Query)を使用すると、SQL... -
C#樹林
【C#】LINQのReverseメソッド:シーケンスの要素を逆順にする方法とList.Reverseとの違い
データの順序を反転させる C#で配列やリストなどのコレクションを扱う際、「データを末尾から先頭に向かって処理したい」や「時系列データを新しい順(降順)に並べ替えたい」といった場面があります。 LINQ(Language Integrated Query)のReverseメソッ... -
C#樹林
【C#】LINQのDistinctとDistinctBy:配列やリストから重複する要素を削除する方法
重複データの排除 データベースから取得したデータや、ユーザー入力値をリスト化する際、同じ値が複数回含まれる「重複」が発生することがあります。集計処理や一覧表示を行う前には、これらを一意(ユニーク)な状態に整理する必要があります。 C#のLINQ... -
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)のように、データを保持せず、機能(メソッド)...