class ParameterTest { static void Main(string[] args) { int i = 0; int[] ints = { 0, 1, 2, 4, 8 }; Console.WriteLine("i = " + i); Console.WriteLine("ints[0] = " + ints[0]); SomeFunction(ints,i); Console.WriteLine("i = " + i); Console.WriteLine("ints[0] = " + ints[0]); Console.ReadKey(); } static void SomeFunction(int[] ints,int i) { ints[0] = 100; i = 100; } }
class ParameterTest { static void Main(string[] args) { int i = 0; int[] ints = { 0, 1, 2, 4, 8 }; Console.WriteLine("i = " + i); Console.WriteLine("ints[0] = " + ints[0]); SomeFunction(ints,ref i); Console.WriteLine("i = " + i); Console.WriteLine("ints[0] = " + ints[0]); Console.ReadKey(); } static void SomeFunction(int[] ints,ref int i) { ints[0] = 100; i = 100; } }
If you pass a parameter to the method, and the input parameter money of this method carries the ref keyword, any change made to the variable by the method will affect the value of the original object.
class OutTest { static void Main(string[] args) { int i; SomeFunction(out i); Console.WriteLine(i); Console.ReadKey(); } static void SomeFunction(out int i) { i = 100; } }View code
If the variable is not assigned an initial value but is used, an error is returned. Instead, an out keyword can be used to solve this problem.
Ref and out keywords