值类型:int double char bool decimal struct enum
引用类型:string array class interface delegate
值类型的值存储在内存的栈上,引用类型的值存储在堆中,栈上存储数据的效率要高于堆
不管形参还是实参,在内存中都是开辟了空间的
值传递:把值类型做为参数传递,把值本身进行传递
注意:
ref可以把值传递改变为引用传递
引用传递:把引用类型的值作为参数传递,传递的是引用
值类型均隐式派生自System.ValueType
引用类型派生自System.Object
class Program { static void Main(string[] args) { Person person1 = new Person(); person1.Name = "张三"; Test(person1); Console.WriteLine(person1.Name); Console.ReadKey(); } static void Test(Person p) { p.Name = "李四"; Person person2 = new Person(); person2.Name = "王五"; p = person2; } } class Person { public string Name { get; set; } }
猜一下结果是什么呢
没错,答案就是李四。
这是为什么呢