メソッド
スポンサーリンク
メソッド
メソッドは次の形式で記述します。
返却型 メソッド名(型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 が格納されます。
スポンサーリンク