using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TypeTest { class Program { static void Main(string[] args) { int[] ints = { 1, 2, 3, 4, 5 };//the array is refrenceType so after call SomeFunction the value will chnaged int i = 2; // int is valueType so after call SomeFunction the value will not changed TestObj obj = new TestObj(); //this is a object refrenceType after call SomeFunction the value will changed obj.age = 3; string str = "4"; //the string type is special refrenceType after call SomeFunction the value will not changed Console.WriteLine(ints[0].ToString()); Console.WriteLine(i.ToString()); Console.WriteLine(obj.age.ToString()); Console.WriteLine(str); SomeFunction(ints, ref i,obj,str); //after Call SomeFunction Console.WriteLine(ints[0].ToString()); Console.WriteLine(i.ToString()); Console.WriteLine(obj.age.ToString()); Console.WriteLine(str); Console.Read(); } static void SomeFunction(int[] ints ,ref int i,TestObj obj,string str) { ints[0] = 100; i = 200; obj.age = 300; str = "400"; } } class TestObj { public int age = 1; } }