メソッド

スポンサーリンク

メソッド

メソッドは次の形式で記述します。

返却型 メソッド名(1 引数1, 2 引数2, ...)
{
    処理
    return 返り値;
}

引数を持たないメソッドは,定義も呼び出しも括弧の中を空にします。
返り値を持たないメソッドは,返却型として void と書きます。

クラスのメンバ名とメソッドの仮引数名が重複した場合,クラスのメンバには this.メンバ名 とアクセスします。

class Class1
{
    private int a;
    public void Method1(int a)
    {
        this.a = a;
    }
}

参照渡し

メソッドの引数は基本的に値渡しです。
参照渡しをしたい場合は,メソッドの定義と呼び出しに ref キーワードを付けます。

static void Swap(ref int a, ref int b)
{
    int temp = a;
    a = b;
    b = temp;
}

static void Main()
{
    int m = 1, n = 2;
    Swap(ref m, ref n);
}

ref キーワードで参照渡しされる引数は,値が割り当てられていることを期待します。
値が未割当てである変数が渡される可能性のある場合には,out キーワードを用います。

static void Initialize(out int a)
{
    a = default(int);
}

static void Main()
{
    int n;
    Initialize(out n);
}

型 T に対して default(T) と書くと,型 T のデフォルトの値を求められます。

オーバーロード

メソッドのオーバーロード (多重定義) は,メソッドのシグニチャ (メソッド名と引数型の並び) が異なれば可能です。
次に示すようなものは,それぞれシグニチャが異なるのでオーバーロード可能です。

bool Method(double a, double b)   // シグニチャ: Method(double, double)
{ ... }

bool Method(int a, int b)         // シグニチャ: Method(int, int)
{ ... }

bool Method(int a, int b, int c)  // シグニチャ: Method(int, int, int)
{ ... }

可変長引数

次のプログラムは,任意の個数の引数を取り,それらの和を求める Sum メソッドを定義したものです。

static int Sum(params int[] args)
{
    int sum = 0;
    for (int i = 0; i < args.Length; i++)
        sum += args[i];
    return sum;
}

static void Main()
{
    Sum(1, 2, 3, 4, 5);
}

メソッドの引数の個数を可変にするには,仮引数に params キーワードを指定します。
Sum(1, 2, 3, 4, 5) と呼び出した場合,args[0] に 1, ..., args[4] に 5 が格納されます。

スポンサーリンク