ref引数
プログラミングC# p88
VBっぽくもあり、C言語っぽくもある感じ。
参照渡しなので、関数の中で書き換えたら呼び出し元にも影響あります。
using System; class ParamTest { static void refParam(ref int param) { param *= 2; Console.WriteLine("param = {0} @ refParam", param); } static void Main(string[] args) { int i = 10; refParam(ref i); Console.WriteLine("i = {0} @ Main", i); } }
結果はこう。
param = 20 @ refParam i = 20 @ Main
Cで書いたらこんな感じ?
#include <stdio.h> void refParam(int* param) { *param *= 2; printf("param = %i @ refParam\n", *param); } int main() { int i = 10; refParam(&i); printf("i = %i @ Main\n", i); }
結果は同じくこう。
param = 20 @ refParam i = 20 @ Main
ちなみにRubyには参照渡しっていう概念がないようです。
Rubyリファレンスマニュアル / FAQ::変数、定数、引数 / 2.6 仮引数に代入すると実引数に影響を及ぼしますか
Javaにもないです。多分。