-
C#におけるprotected(保護された)メンバー変数のスコープとは?
protectedアクセス修飾子の基本C#のprotectedアクセス修飾子は、そのクラス自身と、そこから派生した子クラス(派生クラス)に対してのみメンバーへのアクセスを許可するものです。つまり、protectedを付けたメンバー変数やメソッドは、外部のコードからは直接アクセスできませんが、継承関係にある子クラスからは自由に利用できます。この仕組みにより、基底クラスの機能を子クラスに安全に引き継ぐことができ、オブジェクト指向プログラミングにおける継承(インヘリタンス)の実装を支える重要な要素となっています。protectedメンバー変数の定義例以下は、クラスAの中でprotectedメンバー変
-
C#のスコープ解決演算子(::)とは?名前空間エイリアスの使い方を実例で解説
スコープ解決演算子(::)とはC#におけるスコープ解決演算子「::」は、C++の同名の演算子とは役割が大きく異なります。C++では「::」はグローバル変数やクラスの静的メンバーへのアクセスに用いられますが、C#では主に名前空間エイリアスを修飾するために使用されます。なぜスコープ解決演算子が必要なのか異なる名前空間に同じ識別子を持つ型が存在する場合、どちらの型を参照したいのかを明示する必要があります。このようなときにスコープ解決演算子を使うことで、参照先の曖昧さを解消できます。たとえば、標準の System.Console クラスを確実に参照したい場合は、global名前空間エイリアスと組み合わ
-
C#のHashtableクラスとは?基本の使い方と主要メソッドを解説
C#のHashtableクラスは、キー(Key)と値(Value)のペアを格納するコレクションを表します。内部ではキーのハッシュコードに基づいて要素が整理されており、キーを指定することでコレクション内の要素へ効率よくアクセスできます。Hashtableクラスでよく使用される主なメソッドは以下の通りです。Hashtableクラスの主なメソッドNo.メソッドと説明1public virtual void Add(object key, object value);指定したキーと値を持つ要素をHashtableに追加します。2public virtual void Clear();Hashtable
-
C#のArrayListクラスにおけるIsFixedSizeプロパティの使い方を解説
C#のArrayListクラスには、コレクションの状態を確認するための便利なプロパティが多数用意されています。そのひとつがIsFixedSizeプロパティです。IsFixedSizeプロパティは、ArrayListが固定サイズであるかどうかを示すbool型の値を取得するために使用されます。通常、new ArrayList()で生成したArrayListは可変サイズ(要素の追加・削除が可能)であるため、このプロパティはFalseを返します。IsFixedSizeプロパティの基本的な使い方以下は、IsFixedSizeプロパティを使用してArrayListが固定サイズかどうかを確認するサンプルコー
-
C#でリストが空かどうかをチェックする方法
C#では、List<T>を使って要素を格納し、後から取り出すことができます。まずは、リストの基本的な使い方の例を見てみましょう。例using System; using System.Collections.Generic; public class Demo { public static void Main(string[] args) { var subjects = new List<string>(); subjects.Add(Maths); subjects.Add(Java); subjects.A
-
C#のArrayListクラスにおけるIsReadOnlyプロパティの使い方を解説
C#のArrayListクラスには、ArrayListが読み取り専用かどうかを示す値を取得するためのIsReadOnlyプロパティが用意されています。このプロパティを使うことで、コレクションに対して要素の追加や削除が可能かどうかをプログラム実行時に確認できます。IsReadOnlyプロパティの基本IsReadOnlyプロパティはbool型の値を返します。ArrayListが読み取り専用であれば「True」、読み取り・書き込みが可能な通常の状態であれば「False」が返されます。まず、次のようにArrayListのインスタンスを作成します。ArrayList arrList = new Arra
-
C#のBitArrayクラスにおけるLengthプロパティの使い方
LengthプロパティとはC#のBitArrayクラスにおけるLengthプロパティは、ビット配列に含まれる要素(ビット)の数を取得、または設定するために使用されるプロパティです。まず、次のように5つの要素を持つBitArrayを作成してみましょう。BitArray arr = new BitArray( 5 );この配列の長さを取得するには、Lengthプロパティを参照します。Console.WriteLine( Length: {0}, arr.Length );サンプルコード以下のコードを実行して、BitArrayクラスのLengthプロパティの動作を確認してみてください。using S
-
C#の正規表現における置換(Substitution)の使い方を解説
正規表現による置換(Substitution)とは 正規表現とは、入力テキストと照合されるパターンのことです。文字・演算子・構成要素など、さまざまなカテゴリの要素を組み合わせて正規表現を定義できます。その中でも「置換(Substitution)」は置換パターン(replacement pattern)の中で使用される特別な要素で、Regex.Replaceメソッドなどによってマッチした文字列を別の文字列へ置き換える際に活用されます。 なお、これらの置換要素は検索用の正規表現パターン内では認識されず、置換パターン内でのみ有効になる点に注意してください。 置換要素の一覧 下の表に、C#の正規表現
-
C#で文字列を初期化・比較する方法をわかりやすく解説
C#における文字列の初期化は非常に簡単です。ここでは、文字列の初期化方法と、2つの文字列を比較するための基本的な手法について解説します。文字列の初期化たとえば、「Hello, World!」という文字列を変数に格納したい場合は、次のように初期化します。String str1 = Hello, World!;このように、ダブルクォーテーションで囲んだ文字列リテラルを代入するだけで、文字列型の変数を初期化できます。文字列の比較には String.Compare メソッドを使うC#で2つの文字列を比較するには、String.Compare メソッドを使用します。このメソッドのシグネチャは以下のとおり
-
C#で配列を初期化する方法を徹底解説!宣言から値の代入まで
C#における配列の基本構造すべての配列は、連続したメモリ領域で構成されています。最も小さいアドレスには配列の最初の要素が格納され、最も大きいアドレスには最後の要素が格納されます。この特性を理解しておくと、配列の動作イメージがつかみやすくなります。まずは配列を宣言する配列を使用するには、まず次のように宣言します。int[] rank;ただし、この段階では配列はメモリ上でまだ初期化されていません。配列変数を初期化して初めて、各要素に値を代入できるようになります。newキーワードを使った初期化配列は参照型であるため、newキーワードを使用してインスタンスを作成する必要があります。例えば、要素数5のi
-
C#で2つの数値の最大値を求める方法【初心者向け解説】
C#で2つの数値を比較し、大きい方(最大値)を求める方法を解説します。最も基本的なのはif-else文を使った方法です。初心者にも分かりやすいよう、手順を追って説明していきます。 手順1:数値の宣言と初期化 まず、比較対象となる2つの数値を宣言して初期化します。 int num1 = 50; int num2 = 90; 手順2:if-else文で最大値を判定する 続いて、if-else文を使ってどちらの数値が大きいかを判定します。 if (num1 > num2) { maxNum = num1; } else {  
-
C#でStringオブジェクトを作成する方法をわかりやすく解説
C#で文字列(String)オブジェクトを作成するには、いくつかの方法があります。用途に応じて適切な方法を選ぶことで、コードの可読性や保守性が向上します。Stringオブジェクトを作成する主な方法文字列リテラルをString型の変数に代入するStringクラスのコンストラクタを使用する文字列連結演算子(+)を使用する文字列を返すプロパティを取得する、またはメソッドを呼び出す書式設定メソッドを呼び出して、値やオブジェクトを文字列表現に変換する以下は、C#でさまざまな方法を使って文字列オブジェクトを作成する例です。サンプルコードusing System; namespace Demo {
-
C#でint型とstring型のアイテムを使ってタプルを作成する方法
C#では、Tuple<int, string>のように型引数を指定することで、異なる型の値を1つのタプルにまとめて格納できます。この記事では、int型とstring型の2つのアイテムを持つタプルの作成方法と、各アイテムへのアクセス方法を解説します。 タプルの作成 まず、コンストラクタに2つの値を渡してタプルを作成します。第1引数がint型、第2引数がstring型のアイテムになります。 Tuple<int, string> tuple = new Tuple<int, string>(20, Tom); 各アイテムへのアクセス タプルの要素には、Item1や
-
C#でスレッドを作成する方法を解説!Threadクラスの基本とサンプルコード
スレッドとは何かスレッドは「軽量プロセス」とも呼ばれ、プログラムの実行経路(実行パス)として定義されます。C#では、Threadクラスを拡張することでスレッドを作成できます。作成したスレッドは、Start()メソッドを呼び出すことで子スレッドの実行が開始されます。スレッドの活用例として代表的なのが、現代のオペレーティングシステムにおける並行処理(コンカレントプログラミング)の実装です。マルチスレッドを利用することで、CPUサイクルの無駄を省き、アプリケーションの効率を大幅に向上させることができます。以下に、実際にスレッドを作成する方法の例を示します。サンプルコードusing System; u
-
C#で動的に配列を作成する方法【ArrayListの使い方を解説】
動的配列とは、要素数に応じて自動的にサイズを拡張できる配列のことです。静的配列は宣言時にサイズが固定されるため、後から要素を追加したり削除したりできません。その点、動的配列は柔軟なデータ管理が可能という大きなメリットがあります。C#で動的に配列のようなリストを扱うには、ArrayListコレクションを使用します。ArrayListは個別にインデックスアクセスできるオブジェクトの順序付きコレクションを表し、動的なメモリ割り当てのほか、要素の追加・検索・並べ替えなども簡単に行えます。サンプルコード以下は、C#でArrayListを使って動的にリストを作成し、要素を追加して表示する例です。using
-
C#で無限ループを作成する方法を解説!初心者向けサンプルコード付き
無限ループ(infinite loop)とは、終了条件が満たされずに永遠に繰り返し続けるループのことです。プログラムの設計によっては意図的に使われることもありますが、多くの場合はバグの原因となるため、その仕組みを正しく理解しておくことが重要です。この記事では、C#で無限ループを作成する具体的な方法と、なぜ無限ループが発生するのかをサンプルコード付きでわかりやすく解説します。無限ループのサンプルコード以下は、C#で無限ループを作成した例です。using System; namespace Demo { class Program { static void Main(st
-
C#でカスタム属性(Attribute)を作成する方法を徹底解説
カスタム属性とは、宣言的な情報を格納し、実行時にその情報を取得できるようにするための仕組みです。ここでは、C#でカスタム属性を宣言・作成する具体的な手順を解説します。カスタム属性の宣言方法カスタム属性を定義する際は、まずAttributeUsage属性を使って、その属性をどのプログラム要素に適用できるかを指定します。以下は宣言の基本形です。[AttributeUsage ( AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method | Attr
-
C#でジャグ配列を初期化する方法【基本構文とサンプルコード付き】
ジャグ配列(Jagged Array)とは、「配列の中にさらに配列が格納されている」データ構造のことです。通常の二次元配列と異なり、内側にある各配列ごとに異なる長さを持たせられるのが大きな特徴です。ジャグ配列の基本的な初期化方法C#では、宣言と同時に次のように初期化できます。int[][] rank = new int[2][]{new int[]{3,2,7}, new int[]{9,4,5,6}};この例では、2つの配列を持つジャグ配列を作成しています。1つ目の配列には3つの要素、2つ目の配列には4つの要素が格納されており、それぞれ異なるサイズを持つ点に注目してください。サンプルコード以
-
C#でネストされたwhileループ(二重ループ)を作成する方法
C#におけるネストされたwhileループ(入れ子構造のループ)とは、whileループの中に別のwhileループを配置した構造のことです。外側のループが条件を判定し、その条件がtrueである限り、内側のループ(ネストされたループ)が実行されます。 基本的な構造 まず、外側のループ(ループ1)を見てみましょう。変数aが25未満である間、処理を繰り返します。 while (a<25) { } 次に、内側のループ(ループ2)です。このループはループ1の中に配置されます。変数bが45未満である間、処理を繰り返します。 while (b<45){ } これらを組み合わせることで、ネストされたw
-
C#でユーザー定義の例外(カスタム例外)を作成する方法
他の多くのプログラミング言語と同様に、C#でもユーザー定義の例外(カスタム例外)を簡単に作成できます。ユーザー定義の例外クラスは、標準ライブラリが提供するSystem.Exceptionクラスを継承して実装します。組み込みの例外では表現できないアプリケーション固有のエラー状態を扱いたい場合に、独自の例外クラスを定義すると便利です。ポイント:例外クラスの基本構造カスタム例外クラスは、以下のようにExceptionクラスから派生させます。public class カスタム例外名 : Exception { public カスタム例外名(string message) : base(mess