1. メソッドとは
C#において、メソッドは一連の処理をまとめて名前をつけたものです。メソッドには以下の要素が含まれます。
- アウトプット(戻り値): メソッドが処理した結果を返すデータ型。
- メソッド名: メソッドを呼び出すための識別子。
- インプット(引数): メソッドに渡されるデータ。
- 処理内容: メソッドが実行する一連の処理。
メソッドの基本構造
void メソッド名(引数)
{
// 命令文
}
- void: 戻り値なし。
- メソッド名: 一連の処理に名前をつけたもの。
- 引数: メソッドに渡すデータ。
using System;
class Program {
// メソッドの定義
static void Add(int a, int b) {
int sum = a + b;
Console.WriteLine("結果: " + sum);
}
static void Main() {
Add(3, 5);
}
}
このプログラムでは、Add
メソッドが2つの整数を受け取り、その合計をコンソールに表示しています。
引数のあるメソッド
using System;
namespace Chap08
{
class Program
{
static void CountTo(int num)
{
for (int i = 1; i <= num; i++)
{
Console.Write(i + " ");
}
}
static void Main(string[] args)
{
CountTo(5);
Console.WriteLine();
CountTo(10);
}
}
}
- 引数付きのメソッドで任意の数までカウントできます。
戻り値のあるメソッド
using System;
namespace Chap08
{
class Program
{
static double GetAreaOfSquare(double length)
{
return length * length;
}
static void Main(string[] args)
{
double area = GetAreaOfSquare(3.8);
Console.WriteLine(area);
}
}
}
- メソッドの戻り値を使って、計算結果を取得。
再帰処理
using System;
namespace Chap08
{
class Program
{
static int Factorial(int n)
{
if (n <= 1)
return 1;
return n * Factorial(n - 1);
}
static void Main(string[] args)
{
Console.WriteLine(Factorial(3));
}
}
}
- 再帰を用いた階乗の計算。
メソッドチェーン
using System;
namespace Chap08
{
class Program
{
static void Main(string[] args)
{
string result = "hello".ToUpper().Substring(0, 4);
Console.WriteLine(result);
}
}
}
- メソッドチェーンで一連の処理を記述。
2. メソッドのオーバーロード
オーバーロードとは、同じ名前のメソッドを異なる引数の型・数・並び順で定義することを指します。
オーバーロードの例
using System;
class Program {
// 整数を加算するメソッド
static int Add(int a, int b) {
return a + b;
}
// 小数を加算するメソッド
static double Add(double a, double b) {
return a + b;
}
static void Main() {
Console.WriteLine(Add(3, 5)); // 8
Console.WriteLine(Add(2.5, 4.5)); // 7.0
}
}
このように、異なる引数の型や数で同じ名前のメソッドを定義することで、柔軟なコード設計が可能になります。
3. メソッドの活用
メソッドを使用することで、定形処理を再利用でき、コードの可読性と保守性が向上します。
- 同じ処理を複数回記述する必要がなくなる
- 処理のまとまりが明確になり、コードの意図が伝わりやすくなる
- バグの修正が容易になる
例えば、異なる計算を行うメソッドを定義することで、再利用性を高めることができます。
using System;
class Calculator {
// 乗算メソッド
static int Multiply(int a, int b) {
return a * b;
}
// 除算メソッド
static double Divide(double a, double b) {
if (b == 0) {
throw new ArgumentException("ゼロで割ることはできません。");
}
return a / b;
}
static void Main() {
Console.WriteLine(Multiply(4, 5)); // 20
Console.WriteLine(Divide(10, 2)); // 5.0
}
}
4. staticメンバの役割
C#では、static
メンバはクラスがロードされた際に一度だけメモリにコピーされ、全てのインスタンス間で共有される特性を持ちます。
staticメンバの例
using System;
class Counter {
static int count = 0; // staticメンバ
public static void Increment() {
count++;
}
public static void ShowCount() {
Console.WriteLine("現在のカウント: " + count);
}
}
class Program {
static void Main() {
Counter.Increment();
Counter.ShowCount(); // 現在のカウント: 1
Counter.Increment();
Counter.ShowCount(); // 現在のカウント: 2
}
}
staticメンバのポイント
- インスタンスを作成せずにクラス名から直接アクセスできる
- クラスのロード時に一度だけメモリに格納される
- すべてのインスタンス間で値が共有される
これらの基礎をしっかり押さえておくことで、C#プログラミングの理解が深まります。
まとめができたら、アウトプットとして演習問題にチャレンジしましょう。