-
C#のArrayListとは?インデックスでアクセスできるコレクションの基本と使い方
C#のArrayListコレクションとはArrayListクラスは、個別にインデックスを指定してアクセスできる、順序付きのオブジェクトコレクションを表します。配列の代替手段として利用でき、要素数が動的に変化する場合に特に便利です。ArrayListはSystem.Collections名前空間に属しており、任意の型のオブジェクトを格納できます。ただし、格納される要素はすべてobject型として扱われるため、取り出す際には適切な型へのキャストが必要になる点に注意しましょう。ArrayListクラスの主なプロパティ以下の表は、ArrayListクラスでよく使用されるプロパティの一覧です。番号プロパ
-
C#のBitArrayコレクションとは?インデックスベースのビット操作メソッドを解説
C#におけるBitArrayクラスの概要BitArrayクラスは、ブール値(true/false)として表現されるビット値のコンパクトな配列を管理するためのコレクションクラスです。trueはビットがオン(1)であることを示し、falseはビットがオフ(0)であることを示します。このクラスはSystem.Collections名前空間に属しており、フラグ管理やフィルタ処理など、個々のビット単位での操作が必要な場面で活用されます。インデックスベースの主なメソッド一覧BitArrayコレクションで利用できる代表的なメソッドは以下のとおりです。番号メソッドと説明1public BitArray And
-
C#でローカル変数をfinalにする方法|readonlyキーワードの使い方
Javaにあるfinalキーワードのような「変更不可」なローカル変数を作りたい場合、C#ではfinalキーワードが存在しないため、代わりにreadonlyキーワードを使用します。 readonlyキーワードとは readonly(読み取り専用)を付けた変数には、値を一度だけ代入することができます。 readonlyとして宣言されたフィールドは、オブジェクトの構築時(コンストラクタ内)にのみ値を設定でき、それ以降は変更することができません。この仕組みにより、意図しない値の書き換えを防ぎ、プログラムの安全性と保守性を高めることができます。 サンプルコード 以下の例では、Departmentクラスの
-
C#のクラスメンバーのデフォルトアクセス修飾子は何?privateが基本
C#において、クラスメンバーにアクセス修飾子を明示的に指定しなかった場合、デフォルト(既定)のアクセスレベルは「private」になります。 なぜメンバー変数はprivateにするのか メンバー変数(クラスメンバー)は、設計の観点から見るとオブジェクトの「属性」に相当します。これらをprivateとして外部から隠蔽することで、カプセル化(encapsulation)を実現できます。 カプセル化によって、オブジェクト内部のデータはクラス内のpublicなメソッド(メンバー関数)を経由してのみアクセス・操作できるようになります。その結果、不正な値の代入を防ぎ、クラス内部の実装を自由に変更できるなど
-
【C#入門】リスト(List)コレクションを配列にコピーする方法
C#のリストを配列へコピーする基本の手順 C#で List コレクションの内容を配列にコピーするには、CopyTo()メソッドを使用します。まずは、コピー元となるリストを作成しましょう。 List<string> list1 = new List<string>(); list1.Add(One); list1.Add(Two); list1.Add(Three); list1.Add(Four); 次に、コピー先となる文字列型の配列を宣言し、CopyTo()メソッドを呼び出してリストの要素を配列へコピーします。 string[] arr = new string[20
-
C#のListコレクションと配列の違いとは?定義方法と使い分けのポイントを解説
C#におけるListコレクションと配列の基本的な違い C#プログラミングでは、複数のデータをまとめて管理する際に「List(リスト)」と「配列」がよく使われます。どちらも同じ型のデータを順序付けて保持できる点は共通していますが、サイズの扱いや柔軟性など、重要な違いがあります。 Listコレクションとは Listはジェネリッククラスであり、任意のデータ型を指定してリストを作成できます。最大の特徴は要素数が可変であるという点です。要素を自由に追加・削除できるため、データの件数が事前にわからないケースに適しています。 Listを定義するには、次のように記述します。 List<string&g
-
多次元配列とジャグ配列の違いとは?C#での定義方法をわかりやすく解説
C#には、複数のデータを格納できる「多次元配列」と「ジャグ配列」という2種類の配列構造があります。一見似ていますが、メモリ構造や使い方が異なります。ここでは、それぞれの特徴と定義方法を解説します。 多次元配列(Multi-dimensional Array) 多次元配列は「長方形配列(Rectangular Array)」とも呼ばれ、各行・各列の要素数がすべて同じ形状を持つ配列です。たとえば、3次元の整数型配列は次のように宣言します。 int[ , ] val; 続いて、最もよく使われる2次元配列の定義例を見てみましょう。以下のコードでは、3行×3列の整数型2次元配列を作成しています。 int
-
C#の静的クラスと非静的クラスの違いとは?初心者向けにわかりやすく解説
C#では、クラスを「静的クラス(static class)」と「非静的クラス(通常のクラス)」の2種類に分けて考えることができます。一見似ていますが、インスタンス化の可否やメンバーへのアクセス方法など、重要な違いがいくつかあります。ここでは、それぞれの特徴と使い分けのポイントをコード例とともに解説します。 静的クラスと非静的クラスの主な違い インスタンス化の可否: 非静的クラスは new キーワードを使ってインスタンス化できますが、静的クラスはインスタンス化できません。つまり、静的クラス型の変数を作成することはできません。 含められるメンバー: 静的クラスには静的メソッドや静的プロパティな
-
C#の数値昇格(Numeric Promotion)とは?仕組みをサンプルコード付きで解説
C#における数値昇格(Numeric Promotion)の基本数値昇格(Numeric Promotion)とは、その名の通り、より小さい型が演算の際に自動的により大きい型へと変換される仕組みのことです。例えば、short 型や byte 型は、算術演算を行う際に自動的に int 型へと昇格されます。C#では、+ や * などの算術演算子を使用した場合、short、ushort、byte、sbyte といった小さい整数型はそのまま計算されず、一度 int 型に昇格してから演算が実行されます。そのため、演算結果を受け取る変数も int 型として宣言するのが一般的です。数値昇格のサンプルコード以
-
スタックを使って10進数を任意の基数に変換する方法
概要:スタックによる基数変換の仕組み10進数を2進数や8進数など、任意の基数に変換する際には「スタック」を利用すると効率的です。変換の基本は、割り算の余りを順番にスタックへ積み込み(Push)、最後に取り出し(Pop)ながら出力すること。スタックは後入れ先出し(LIFO)構造のため、自然と上位の桁から正しい順序で結果が得られます。1. 変換したい基数を変数に設定するまず、計算したい基数を格納する変数を用意します。ここでは例として2進数に変換するため、変数 baseNum に 2 を設定します。int baseNum = 2;同様に、8進数へ変換したい場合は次のように設定を変更します。int b
-
C#の条件式における数値昇格(Numeric Promotion)とは
数値昇格(Numeric Promotion)とは数値昇格とは、short型からint型のように、より小さいデータ型が自動的により大きいデータ型へと変換される仕組みのことです。C#では、異なる型が混在する式を評価する際に、この昇格が暗黙的に行われます。特に三項演算子(条件演算子 ? :)を使った条件式では、第2オペランドと第3オペランドの型が統一される必要があるため、小さい型は自動的に大きい型へ昇格されます。条件式での数値昇格の例次のサンプルコードでは、条件式の中でshort型が自動的にint型へ昇格される様子を確認できます。using System; class Program { &nb
-
C#のジェネリックと非ジェネリックコレクションの違いを徹底解説
C#のコレクションには、大きく分けて「ジェネリック(Generic)」と「非ジェネリック(Non-Generic)」の2種類が存在します。それぞれ特徴や用途が異なるため、適切に使い分けることが重要です。C#におけるジェネリックコレクションとはジェネリックコレクションは、同じデータ型の要素のみを格納できるコレクションです。型安全性が保証され、ボックス化・ボックス化解除のオーバーヘッドがないため、パフォーマンス面でも優れています。代表的なジェネリックコレクションには以下のようなものがあります。List<T>Dictionary<TKey, TValue>HashSet<
-
C#のinternalキーワードとは?アクセス修飾子の役割と使い方を解説
C#における internal キーワードは、メンバーに対して「内部(internal)」アクセス修飾子を指定するために使用されます。このキーワードを使うことで、クラスのメンバー変数やメソッドへのアクセス範囲を、同一アセンブリ内に限定できます。 internalアクセス修飾子の基本 internal アクセス修飾子が付いたクラスやメンバーは、同じアセンブリ(プロジェクト)内にある他のクラスやメソッドから自由にアクセス可能ですが、アセンブリの外部からは参照できません。 つまり、あるメンバーに internal を指定した場合、そのメンバーが定義されているアプリケーション(アセンブリ)内であれば、
-
C#のparamsキーワードとは?使い方と活用メリットを徹底解説
C#のparamsキーワードとは メソッドを定義する際、呼び出し側から渡される引数の数が事前に確定していないケースはよくあります。そんなときに役立つのが、C#のparamsキーワードです。 paramsを指定した配列型のパラメータ(可変長引数)を持つメソッドは、任意の個数の引数を受け取ることができます。呼び出し側ではカンマ区切りで値を並べるだけでよく、配列を明示的に作成する必要がないため、コードがシンプルで読みやすくなります。 paramsキーワードの主なルールと特徴 引数の個数を柔軟に変更でき、0個の引数での呼び出しも可能(空の配列として扱われる) paramsパラメータは必ずメソッドの
-
C#で2つのタプルを比較する方法|==演算子の基本的な使い方
C#でのタプル比較の基本タプル同士を直接比較できるようになったのは、C# 7.3からです。それ以前のバージョンでは、各要素を個別に取り出して比較する必要がありました。C#では、等値演算子(==)を使うだけで2つのタプルを簡単に比較できます。特別なメソッドを呼び出す必要はなく、数値や文字列と同じ感覚で記述できるのが魅力です。比較対象となる2つのタプルまず、比較するための2つのタプルを用意しましょう。var one = (x: 1, y: 2);var two = (p: 1, q: 2);== 演算子でタプルを比較する2つのタプルを比較するには、== 演算子をそのまま使います。if (one =
-
C#の配列はなぜインデックス0から始まるのか?その理由を解説
配列とメモリアドレスの関係配列とは、本質的にはメモリ上の特定アドレスへのポインタです。このアドレスが指す先が配列の最初の要素にあたり、インデックスはそこからの「オフセット(相対的なずれ)」として扱われます。実はこの考え方自体は、C言語が誕生する以前から存在していた概念なのです。例えば、配列の要素がアドレス 0Xff000 から始まり、{35, 23, 67, 88, 90} の5つの要素を持つとします。int型は4バイトで格納されるため、メモリ上では次のように配置されます。0Xff000 → 35 0Xff004 → 23 0Xff008 → 67 0Xff012 → 88 0Xff016 →
-
C#でJavaのfinalキーワードを実現する方法:sealed修飾子の使い方
Javaにはクラスやメソッドの継承・オーバーライドを制限するためのfinalキーワードが用意されていますが、C#には同名のキーワードは存在しません。C#で同じ機能を実現したい場合は、sealed(シールド)キーワードを使用します。 sealed修飾子とは sealed修飾子をメソッドに付けると、そのメソッドはそれ以上オーバーライドできなくなります。つまり、派生クラス側で挙動を上書きされることを防ぎたい場合に有効です。 ただし、メソッドにsealedを適用するには以下の条件を満たす必要があります。 sealedメソッドは派生クラスに属していること 対象のメソッドがオーバーライドされたメソッド
-
C#で配列を反転する方法|Array.Reverseの使い方を解説
C#で配列の要素の並びを逆にしたい場合は、Array.Reverseメソッドを使うのが最も簡単です。この記事では、元の配列の準備から反転処理、実行結果までをわかりやすく解説します。 1. 元の配列を用意する まず、反転対象となる元の配列を定義し、その内容をコンソールに表示してみましょう。 int[] arr = { 1, 2, 3 }; // 元の配列を表示 Console.WriteLine(Original Array= ); foreach (int i in arr) { Console.WriteLine(i); } 2. Array.Reverse()で配列を反転する 配
-
C#のHashSetとは?重複要素を自動的に削除できるSetコレクションの使い方
C#のHashSetとは C#のHashSet<T>は、System.Collections.Generic名前空間に属する最適化されたセットコレクションです。最大の特徴は、同じ要素(重複する値)を自動的に排除して格納する点にあります。そのため、配列やリストの中から重複した文字列や要素を取り除きたい場合に非常に便利です。 さらに、HashSetは内部でハッシュテーブルを使用しているため、要素の検索・追加・削除が高速に行えるというメリットもあります。 HashSetで重複する文字列を削除するサンプルコード 以下は、C#のHashSetを使って、文字列配列から重複する単語を削除する例
-
C#でJavaのfinal変数を実現する方法:readonlyとsealedキーワードの使い方
Javaには変数やクラスを固定するためのfinalキーワードが用意されていますが、C#には同名のキーワードは存在しません。しかし、C#でも同等の機能を実現することは可能です。それにはsealedまたはreadonlyキーワードを使用します。 readonlyキーワードとは readonly(読み取り専用)修飾子を付けた変数には、値を一度しか代入できません。つまり、readonlyとして宣言されたフィールドは、オブジェクトの構築時(コンストラクタ内)にのみ値を設定でき、その後は一切変更することができません。 この特性により、インスタンスごとに異なる値を持たせつつ、生成後は不変であることを保証した