メソッドに引数を参照渡しで渡す方法です。
メソッドの戻り値で完結することが多いのですが、
それ以外に、戻り値とは別に引数を返したい場合があります。
自分が使うシーンとしては、メソッドの戻り値でDBから取得したデータリストを取得して、
そのデータの個数の値を別個に取得したいときなどがあります。
開発環境:ASP.NET2.0
開発言語:C#
値渡しの場合と、参照渡し場合の違いをまとめてみました。
■元々(値渡しの場合)
public static void A(int arg1)
{
arg1 = 50;
}
public static void Main()
{
int x = 10;
A(x);
Console.WriteLine(x);
}
出力は10のままで、呼び出しもとには影響がありません。
■ref修飾子(参照渡し)
public static void A(ref int arg1)
{
arg1 = 50;
}
public static void Main()
{
int x = 10;
A(ref x);
Console.WriteLine(x);
}
出力は50になる呼び出しもとの数値が変わりました。
■out修飾子(参照渡し)
outを使う場合はrefとは違い
あらかじめ値を代入しておく必要がなくなります。
public static void A(out int arg1)
{
arg1 = 50;
}
public static void Main()
{
int x; //←ここで代入しても参照が渡ることはないです。
A(out x);
Console.WriteLine(x);
}
出力が50になる。
その代わりAメソッド内でoutパラメータのarg1の値を使用することができず、
必ず、新しい値が代入されてしまいます。
0 コメント:
コメントを投稿