C#の概要3

パラメータ修飾子
  • out メソッドからの出力用のパラメータにつける。リファレンス渡し。メソッド内で値を設定しなければコンパイルエラー。
  • ref 値をリファレンス渡しする。メソッド内で値を設定しなくても問題無し。
  • params 可変長引数。引数をで渡された値を一つの配列にいれてしまう。

out
メソッドからの出力を受けとるためのパラメーター(output parameter)として宣言する。メソッド内で値を設定しなければコンパイルエラーになる。値はメソッド外で有功でなければならないのでリファレンス渡しになる。さらに、メソッドに値を渡すときにoutキーワードをつけて渡す必要がある。
サンプル
static void Circle(int radius, out int diameter, out double area)
{
diameter = radius * 2;
answer = radius * radius * 3.14;
}

static void Main()
{
int diameter;
double area;
Circle(4, out diameter, out area);
Console.WriteLine("Circle radius is 4, then the Circle diameter is {0}, area is {1}", diameter, area);
}

このキーワードのおかげで複数の値を返すことができる。

ref
メソッドに値をリファレンス(参照)渡しする。つまり、値の変更を許可するパラメータとして使える。リファレンスとして渡す値は初期化されていなければならない。また、参照型をrefを使って渡す場合は渡したオブジェクト自体を変更できる。refキーワードもメソッド呼び出し時にrefをつけて値を渡す必要がある。
サンプル
static void AreYouReady(ref string str)
{
str = "OK!"
}

static void Main(string[] args)
{
s1 = "Are you ready?";
AreYouReady(ref s1);
Console.WriteLine(s1);
}


params
引数をまとめて一つの配列にする。可変長引数とか可変個引数とか呼ばれているもの。注意点としてはparamsは必ず一番最後に書かれていなければならない。つまり、paramsとして指定できる引数は一つ。
sample
static double Sum(params double[] values)
{
double sum = 0;
for (int i = 0; i < values.Length; i++)
sum += values[i];
return sum;
}

static void Main(string[] args)
{
int sum;
sum = Sum(1.2, 54.2, 55, 90.2, 0.2);
}

コメント

このブログの人気の投稿

howmとorg-mode両方でタスク管理できるようにした

Fenrirを少し使いやすく

fenrirにmigemoを入れたのでメモ