メソッドに引数を参照渡しで渡す方法です。
メソッドの戻り値で完結することが多いのですが、
それ以外に、戻り値とは別に引数を返したい場合があります。
自分が使うシーンとしては、メソッドの戻り値で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 コメント:
コメントを投稿