-
Python樹林
Pythonのset(集合)に要素を追加する:.add()メソッドの使い方
Pythonのset(集合型)は、作成した後でも要素を追加したり削除したりできる「ミュータブル(変更可能)」なデータ型です。リストの .append() とは異なり、set への要素の追加には .add() メソッドを使用します。 この記事では、.add() メソッドの基本的... -
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) 振る... -
C#樹林
【C#】プロパティとバッキングフィールド:setアクセサーで検証ロジックを実装する方法
自動実装プロパティの利便性と限界 C#のクラス設計において、データを外部に公開する最も簡単な方法は「自動実装プロパティ」を使用することです。 // 自動実装プロパティ public int Quantity { get; set; } この { get; set; } 構文は非常に簡潔ですが、... -
C#樹林
【C#】プロパティの初期化:コンストラクタを省略し宣言時にデフォルト値を設定する方法
プロパティの初期値設定 C#のクラス設計において、プロパティ({ get; set; })がnewでインスタンス化された時点で、nullや0といった型のデフォルト値ではなく、特定の「初期値」を持っていてほしい場合があります。 従来、この初期値の設定は、主にコンス... -
C#樹林
【C#】読み取り専用プロパティを定義する3つの方法 (get;, private set, =>)
読み取り専用プロパティの重要性 C#のクラス設計において「カプセル化」は非常に重要な原則です。これは、クラスの内部データをprivateフィールドで保護し、外部からの不正なアクセスや意図しない変更を防ぐことを意味します。 特に、オブジェクトが一度作... -
C#樹林
【C#】プロパティ(Property)の基本:{ get; set; }によるカプセル化
クラスのデータと「カプセル化」 C#のクラスは、データ(状態)と振る舞い(メソッド)を一つにまとめた設計図です。クラスが持つデータを「フィールド(メンバー変数)」として定義できますが、これをpublic(公開)にしてしまうと、クラスの外部から誰で... -
C#樹林
【C#】クラス(class)の定義と基本:フィールド、プロパティ、コンストラクタ、メソッド
クラスとは:オブジェクト指向の設計図 C#はオブジェクト指向プログラミング(OOP)言語であり、その中心的な概念が「クラス(class)」です。 クラスとは、特定のデータ(状態)と振る舞い(機能)を一つにまとめた「設計図」のようなものです。 クラス (... -
C#樹林
【C#】Queue
の基本:FIFO(先入れ先出し)コレクションの使い方 Queue<T>とは何か? FIFO(先入れ先出し) C#のSystem.Collections.Generic名前空間には、List<T>(動的配列)やStack<T>(スタック)と並び、Queue<T>(キュー)という特定の操作に特化したコレクションが用意されています。 Que... -
C#樹林
【C#】Stack
の基本:LIFO(後入れ先出し)コレクションの使い方 Stack<T>とは何か? LIFO(後入れ先出し) C#のSystem.Collections.Generic名前空間には、List<T>やDictionary<TKey, TValue>の他に、Stack<T>という特定の操作に特化したコレクションがあります。 Stack<T>(スタック)は... -
C#樹林
【C#】HashSet
の集合演算:UnionWith, IntersectWith, ExceptWith の使い方 HashSet<T>と集合演算 HashSet<T>は、重複しない要素を高速に管理(追加、削除、検索)できるC#のコレクションです。 HashSet<T>の真の強力さは、AddやContainsといった基本的な操作だけでなく、数学的な「集合演算」を非常に効率的に実... -
C#樹林
【C#】HashSet
の基本:重複しない要素を高速に管理するコレクション HashSet<T>とは何か? C#のSystem.Collections.Generic名前空間には、List<T>やDictionary<TKey, TValue>といった便利なコレクションが用意されています。その中でもHashSet<T>は、ユニークな(重複しない)要素を管理することに... -
C#樹林
【C#】DictionaryのKeysプロパティですべてのキーを順に処理する方法
Dictionaryとキー(Key) Dictionary<TKey, TValue>は、C#においてキー(Key)と値(Value)をペアで管理するコレクションです。foreachループでDictionary自体を処理すると、KeyValuePair<TKey, TValue>(キーと値の両方を含むオブジェクト)... -
C#樹林
【C#】Dictionary<TKey, TValue>の基本:キーと値のペアを扱うコレクション
Dictionary<TKey, TValue> とは C#においてDictionary<TKey, TValue>は、**キー(Key)と値(Value)**のペアをセットで格納するコレクションです。 List<T>がインデックス(0, 1, 2...)で要素を管理するのに対し、Dictionaryは"Produc... -
C#樹林
【C#】List
.AsReadOnlyメソッドで読み取り専用のビュー(Wrapper)を作成する方法 List<T>を読み取り専用として公開したい System.Collections.Generic.List<T>は、Add, Remove, Insertなどのメソッドを持ち、要素を自由に変更(追加・削除)できる「可変(Mutable)」なコレクションです。 しかし、クラスの内部で管理してい... -
C#樹林
【C#】List
.ForEachとArray.ForEachの使い方:foreachループとの違い foreachループとForEachメソッド C#で配列(T[])やList<T>(ジェネリックリスト)に含まれるすべての要素に対して、何らかの処理を順番に行いたい場合、foreachループ構文を使用するのが最も標準的な方法です。 var items = new List<string>... -
C#樹林
【C#】List
.BinarySearchでソート済みリストを高速に検索する方法 リストの検索とパフォーマンス List<T>(ジェネリックリスト)に格納されたデータから特定の要素を探す際、Containsメソッド、IndexOfメソッド、またはLINQのFirstOrDefaultメソッドを使用するのが一般的です。 これらの方法は非常に直感的ですが、... -
C#樹林
【C#】List
.SortとComparison でリストをカスタム順序で並べ替える方法 List<T>.Sort()の標準動作とその限界 C#のList<T>(ジェネリックリスト)が提供するSort()メソッド(引数なし)は、要素を「昇順」(intなら数値の大小、stringなら辞書順)に並べ替える便利な機能です。 しかし、このデフォルトのルールでは... -
Python樹林
Pythonの集合型(set)とは? 重複を除外する特徴と基本的な作成方法
Pythonには、複数のデータをまとめて扱うコレクション型として、リスト(list)やタプル(tuple)の他に**集合型(set)**があります。 set は、数学の「集合」の概念に基づいたデータ型で、以下の2つの非常に重要な特徴を持っています。 重複する要素を持... -
Python樹林
Pythonのrange()関数:連続した数値シーケンスを生成する方法
Pythonでプログラミングを行う際、for ループ(繰り返し処理)を「5回だけ実行したい」や、「10から20までの連続した数値が欲しい」といった場面が頻繁にあります。 このような場合に使うのが range() 関数です。range() は、それ自体がリスト(list)なの... -
Python樹林
Pythonで変数の値を入れ替える方法:一時変数を使わない多重代入(スワップ)
プログラミングでは、2つの変数に格納されている値を互いに入れ替えたい(スワップしたい)場面があります。例えば、並び替え(ソート)アルゴリズムを実装する際などです。 伝統的な方法(一時変数の使用) 多くのプログラミング言語では、2つの変数の値... -
Python樹林
Pythonのアンパック機能:リストやタプルの要素を変数に一括代入する方法
Pythonでリスト(list)やタプル(tuple)を扱う際、その要素を個別の変数に取り出して使いたいことがよくあります。 例えば、座標データを扱う場合、以下のようにインデックスを指定して取り出すのが通常です。 point = (100.5, 35.2) # 通常のインデック... -
Python樹林
Pythonタプルの操作:要素の参照(インデックス)、スライス、要素数の取得
Pythonのタプル(tuple)は、一度作成すると中身を変更できない「イミュータブル(変更不可能)」なデータ型です。 しかし、「変更」ができないだけで、リスト(list)と同様に、格納されている要素を**「参照」したり、「スライス(切り出し)」したり、... -
C#樹林
【C#】List
.Sortメソッドでリストの要素を昇順に並べ替える方法 List<T>のソート(並べ替え) C#のList<T>(ジェネリックリスト)は、データを動的に追加・削除できるため非常に便利ですが、格納されたデータを特定の順序(例: 数値の小さい順、アルファベット順)に並べ替えたい(ソートしたい)という要求... -
C#樹林
【C#】List
.Reverseメソッドでリストの要素をその場で逆順にする方法 List<T>の順序反転 C#のList<T>(ジェネリックリスト)に格納された要素の順序を、[A, B, C] から [C, B, A] のように完全に反転させたい場合があります。 List<T>クラスは、この操作を簡単に行うためのReverseというインスタンスメソッ... -
C#樹林
【C#】List
.RemoveAllで条件に一致する全要素を削除する方法 List<T>から複数の要素を削除する C#のList<T>(ジェネリックリスト)は、Remove(T item)メソッド(指定した最初の1要素を削除)やRemoveAt(int index)メソッド(指定したインデックスの要素を削除)を提供しています。 しかし、「リストに含... -
C#樹林
【C#】List
.AddRangeで別のコレクションの要素をまとめて追加する方法 List<T>への要素の追加 C#のList<T>に要素を追加する際、最も基本的な方法はAddメソッドを呼び出すことです。 var users = new List<string>(); users.Add("Alice"); users.Add("Bob"); しかし、もし追加したい要素が既に**別の配列(st... -
C#樹林
【C#】List
を宣言と同時に初期化する方法(コレクション初期化子) List<T>の初期化 System.Collections.Generic.List<T>は、C#において最もよく使われる動的サイズのコレクション(データの集まり)です。 従来、List<T>に初期データを追加するには、インスタンスを作成した後にAddメソッドを繰り返し呼... -
C#樹林
【C#】List
(ジェネリックリスト)の基本的な使い方:配列との違いとAdd, Remove, Count List<T> とは何か? なぜ配列より便利か? C#で複数のデータをまとめて扱う最も基本的な方法は「配列(T[])」です。しかし、配列には「一度作成するとサイズ(要素数)を変更できない」という大きな制約があります。 // 3個の要素しか入らない配列 ...