-
C#のBinaryReaderクラスの基本的な使い方とサンプルコード
C#でストリームからバイナリデータを読み込みたい場合は、BinaryReaderクラスを使用します。このクラスは、System.IO名前空間に属しており、数値や文字列などのデータをバイナリ形式でファイルに書き込んだ内容を読み戻す際に非常に便利です。BinaryReaderクラスとはBinaryReaderは、FileStreamなどで開いたストリームから、プリミティブ型(double、int、boolなど)や文字列を指定されたエンコーディングで読み取るためのクラスです。読み取りにはReadDouble()、ReadString()、ReadInt32()といった専用メソッドを使います。書き込み
-
C#のBitArrayクラスにおけるItemプロパティ(インデクサ)の使い方を解説
C#のBitArrayクラスには、Itemプロパティが用意されています。このプロパティを使うことで、BitArray内の指定した位置にあるビットの値を取得・設定することができます。Itemプロパティとインデクサの関係C#では、Itemプロパティを直接実装する代わりに、thisキーワードを使用してインデクサを定義するのが一般的な方法です。インデクサを定義しておけば、配列と同じようにmyCollection[index]という形式で要素にアクセスできます。つまり、BitArrayの各ビットに対して、インデックス番号を指定して読み書きが可能になるのです。BitArrayクラスのItemプロパティの実
-
C#のBinaryWriterクラスの使い方を徹底解説!バイナリデータの書き込み方法
C#のBinaryWriterクラスとはストリームにバイナリ情報を書き込みたい場合には、C#のBinaryWriterクラスを使用します。BinaryWriterはSystem.IO名前空間に属しており、double型や文字列などのプリミティブ型の値をバイナリ形式でストリームに書き込むための便利な機能を提供しています。書き込んだデータを読み戻す際には、同じくSystem.IO名前空間に含まれるBinaryReaderクラスを組み合わせて使うのが一般的です。BinaryWriterを使った実装例以下は、BinaryWriterクラスでファイルにバイナリデータを書き込み、BinaryReaderで
-
C#.NETのアクセス指定子とは?種類と使い分け方を徹底解説
C#.NETでは、クラスやそのメンバーへのアクセス範囲を制御するために、複数のアクセス指定子(アクセス修飾子)が用意されています。適切なアクセス指定子を選ぶことでカプセル化を実現でき、安全で保守性の高いコードを書くことができます。ここでは、C#で利用できる主なアクセス指定子をそれぞれ解説します。public(パブリック)public指定子が付いたメンバーは、クラスの外部からも自由にアクセスできます。メンバー変数やメソッドを他の関数やオブジェクトに公開したい場合に使用します。ただし、むやみにpublicを使うとカプセル化が損なわれるため、公開する範囲は必要最小限にとどめるのが良い設計とされていま
-
C#のFileStreamクラスの使い方を徹底解説!ファイル読み書きの基本
C#のFileStreamクラスとは?FileStreamクラスは、C#でファイルに対して読み込み・書き込みなどの操作を行うためのストリームを提供するクラスです。System.IO名前空間に属しており、バイト単位でファイルにアクセスできるため、テキストファイルだけでなくバイナリデータの処理にも活用できます。FileStreamオブジェクトの作成方法FileStreamクラスを使用するには、まずインスタンスを作成します。基本的な作成方法は以下のとおりです。FileStream fstream = new FileStream(d:\\new.txt, FileMode.OpenOrCreate)
-
C#でフォルダのサイズを計算する方法をわかりやすく解説
C#で特定のフォルダのサイズ(容量)を計算したい場合、DirectoryInfoクラスとEnumerateFilesメソッドを組み合わせるのが基本的なアプローチです。この記事では、フォルダ内のファイルサイズ合計を取得する方法から、サブフォルダまで含めた計算方法、さらに覚えておくと便利なディレクトリ操作メソッドまで詳しく解説します。 フォルダサイズを計算する基本のコード まず、計算対象となるフォルダをDirectoryInfoクラスで指定します。ここでは例として「D:/new」フォルダを使用します。 DirectoryInfo info = new DirectoryInfo(@D:/new)
-
C#で再帰を使って数値の累乗を計算する方法
C#では、再帰(リカージョン)を利用することで、数値の累乗をシンプルかつ直感的に計算できます。この記事では、再帰呼び出しを使った累乗計算の実装方法を、サンプルコードとともにわかりやすく解説します。再帰による累乗計算の仕組み再帰とは、関数が自分自身を呼び出すことで処理を繰り返す手法です。累乗計算の場合、「指数 p が 0 以外である限り、関数自身を再度呼び出す」という形で実装します。if (p != 0) { return (n * power(n, p - 1)); }上記のコードでは、n が基数(元となる数値)です。再帰が行われるたびに指数 p が 1 ずつ減少していき、最終的に p
-
C#でカスタムメソッドを定義して呼び出す方法【サンプルコード付き】
C#でカスタムメソッド(独自に作成したメソッド)を定義するには、以下の構文を使用します。<アクセス修飾子> <戻り値の型> <メソッド名>(パラメータリスト) { メソッド本体}構成要素の意味アクセス修飾子: メソッドへのアクセス範囲を指定します(public、private など)。戻り値の型: メソッドが返す値のデータ型です。値を返さない場合は void を指定します。メソッド名: 呼び出し時に使用するメソッドの名前です。パラメータリスト: メソッドに渡す引数の型と名前を指定します。引数がない場合は空にします
-
C#で小数のべき乗を計算する方法|Math.Powメソッドの使い方
C#で小数(分数)のべき乗を計算するには、Math.Powメソッドを使用します。MathクラスはSystem名前空間に含まれており、第1引数に「底」、第2引数に「指数」をdouble型で指定すると、計算結果がdouble型で返されます。たとえば、5の3.7乗を求めたい場合は、次のように記述します。double res = Math.Pow(5, 3.7);サンプルコード以下は、C#で小数のべき乗を計算する完全なサンプルプログラムです。using System; class Program { static void Main() {  
-
C#のメソッドにパラメーターを渡す方法とは?値渡しの仕組みとサンプルコード
C#でメソッドにパラメーターを渡す基本的な方法のひとつが「値渡し(値パラメーター)」です。この仕組みでは、メソッドが呼び出されると、各値パラメーターに対して新しいストレージ領域が作成されます。そして、呼び出し元の実際の引数の値がその新しい領域へコピーされます。そのため、メソッド内でパラメーターに対して行った変更は、呼び出し元の引数には一切影響しません。値渡しのポイントメソッド呼び出し時に、パラメーターごとに新しい記憶領域が確保される引数の値がコピーされるため、元の変数は保護されるメソッド内での変更は呼び出し元に反映されない以下は、メソッドにパラメーターを渡す動作を確認できるサンプルコードです。
-
C#のポインターとは?基本概念からunsafeコードでの使い方まで解説
ポインターとは何かポインター(pointer)とは、別の変数が格納されているメモリ上のアドレス、つまりメモリ位置の直接的なアドレスを値として持つ変数のことです。通常の変数が「データそのもの」を保持するのに対し、ポインターは「データがどこにあるか」という場所の情報を保持します。ポインターの宣言方法ポインターの基本的な構文は次のとおりです。type *var-name;たとえば、double型へのポインターは以下のように宣言します。double *z; /* double型へのポインター */unsafe修飾子とアンマネージコードC#では、安全性を確保するために、ポインター変数はunsafe修飾子
-
C#でポインターをメソッドのパラメーターとして渡す方法を解説
C#でポインターをメソッドのパラメーターとして渡す方法C#では、unsafeキーワードを使用することで、ポインターをメソッドのパラメーターとして渡すことができます。本記事では、2つの変数の値を入れ替えるswap関数を例に、具体的な実装手順を解説します。手順1:unsafe修飾子を付けたswap関数を作成するまず、unsafe修飾子を付けたswap関数を作成します。この関数は2つのint型ポインターを受け取り、ポインターが指し示す先の値を入れ替えます。public unsafe void swap(int* p, int *q) { int temp = *p; *p = *q;
-
C#のメソッドオーバーロードとは?基本から実装例までわかりやすく解説
C#におけるメソッドのオーバーロード(Method Overloading)とは、同じ名前を持つ2つ以上のメソッドを、異なるパラメータで定義することを指します。オーバーロードを実現する方法は主に2つあります。引数の数を変える引数のデータ型を変えるオーバーロードの基本的な考え方例えば、数値の掛け算の結果を出力する関数を作りたい場合を考えてみましょう。オーバーロードされたメソッドは、名前は同じでも引数の数が異なります。public static int mulDisplay(int one, int two) { } public static int mulDisplay(int one, in
-
C#の継承とは?基底クラスと派生クラスの基本を実例で解説
継承(Inheritance)とは継承とは、既存のクラスをもとに新しいクラスを定義できるオブジェクト指向プログラミングの重要な仕組みです。継承を活用することで、アプリケーションの作成や保守が格段に容易になります。また、すでに実装済みのコード機能を再利用できるため、開発時間の短縮にも大きく貢献します。基底クラスと派生クラスの概念継承は「基底クラス(base class)」と「派生クラス(derived class)」という概念に基づいています。C#では、1つのクラスは複数のクラスから直接派生することはできませんが、複数のインターフェースを実装することは可能です。そのため、複数のインターフェースか
-
C#プログラムの主要な構成要素とは?基本構造をわかりやすく解説
C#プログラムは、いくつかの基本的な要素が組み合わさって構成されています。主な構成要素は以下のとおりです。名前空間(Namespace)の宣言クラスクラスのメソッドクラスの属性Mainメソッドステートメント(文)と式コメントそれでは、実際にC#プログラムを作成する例を見てみましょう。サンプルコードusing System; namespace Demo { class Program { static void Main(string[] args) { Console.WriteLine(Our first program in C#!);
-
C#のThreadクラスとは?主要なプロパティとメソッドを徹底解説
C#のThreadクラスの基本スレッド(Thread)は、軽量なプロセスとして知られています。最も一般的な使用例としては、現代のオペレーティングシステムにおける並行プログラミング(Concurrent Programming)の実装が挙げられます。C#では System.Threading.Thread クラスを使うことで、スレッドの生成・制御・状態管理を行うことができます。この記事では、Threadクラスが提供する主要なプロパティとメソッドについて詳しく解説します。Threadクラスの主なプロパティ以下は、Threadクラスでよく使われる代表的なプロパティの一覧です。No.プロパティと説明1
-
C#の条件付きプリプロセッサディレクティブ(#if)とは?使い方をわかりやすく解説
条件付きプリプロセッサディレクティブとは C#では、#ifディレクティブを使って条件付きコンパイルを実現できます。条件付きディレクティブは、指定したシンボルがtrueと評価されるかどうかをテストする際に非常に便利です。評価結果がtrueであれば、コンパイラは#ifから次のディレクティブまでの間にあるすべてのコードを処理対象とします。 これにより、デバッグビルドとリリースビルドで異なるコードを実行したり、特定のプラットフォーム向けにのみ有効なコードを記述したりすることが可能になります。 基本構文 #if symbol [operator symbol]... symbolには、テストしたいシン
-
C#のコンパイル時ポリモーフィズムとは?静的バインディングの仕組みとオーバーロードの実装例
ポリモーフィズムの種類:静的と動的ポリモーフィズム(多態性)は、大きく分けて「静的ポリモーフィズム」と「動的ポリモーフィズム」の2種類があります。静的ポリモーフィズムでは、関数呼び出しへの応答がコンパイル時に決定されます。一方、動的ポリモーフィズムでは、実行時に決定されます。コンパイル時に関数とオブジェクトを結び付けることを「早期バインディング(early binding)」と呼びます。これは「静的バインディング」とも呼ばれます。C#で静的ポリモーフィズムを実現する2つの手法C#では、以下の2つの技法を使って静的ポリモーフィズムを実装できます。関数のオーバーロード(Function Overl
-
C#の三項演算子(条件演算子)とは?基本構文と使い方を解説
三項演算子(条件演算子)とは三項演算子は、C#における条件演算子(Conditional Operator)とも呼ばれる演算子で、「?」と「:」を使って条件分岐を1行で簡潔に記述できます。名前の通り、3つのオペランド(引数)を受け取り、ブール式(真偽値)を評価した結果に応じて、いずれか一方の値を返します。基本構文条件式 ? 真の場合の値 : 偽の場合の値;例えば、次のように記述します。y = (x == 1) ? 70 : 100;この場合、最初のオペランドである条件式「(x == 1)」が true(1)と評価されれば、2番目のオペランド「70」が返されます。逆に false(0)と評価され
-
C#のコンポジション(構成)とは?集約との違いとコード例でわかりやすく解説
C#におけるコンポジション(Composition:構成)は、オブジェクト間の関係を表す設計手法の一つです。親オブジェクトが削除されると、その子オブジェクトも同時に無効になるという強い依存関係が特徴です。 コンポジションの基本概念 コンポジションは、集約(Aggregation)の一種であり、「部分と全体(part-of)」の関係を表現します。両者の大きな違いは、オブジェクトのライフサイクルにあります。 コンポジション: 親オブジェクトが破棄されると、子オブジェクトも一緒に破棄される(強い所有関係) 集約: 親オブジェクトが破棄されても、子オブジェクトは独立して存在し続けられる(弱い所有関係