public void sample() { int i = 5; value1( i ); //値渡し Console.WriteLine(i); //=> 5 value2( ref i ); //参照渡し Console.WriteLine(i); //=> 10 } // 値型の値渡し public void value1( int x ) { x = 10; } // 値型の参照渡し public void value2( ref int x ) { x = 10; } 値渡しをしているときはsample関数のiは書き換わりませんでしたが、参照渡しをしているときは書き換わっていることがわかります。 ref キーワード - C# リファレンス | Microsoft Docs C#には値型、参照型、ポインタ型という概念が全部存在し、それぞれ値渡しと参照渡しを行えるため、参照という言