【km笔记】CSharp之值类型和引用类型
一.值类型和引用类型
1.值类型
a.byte,bool,enum,struct,decimal
b.都派生自System.ValueType类;但是System.ValueType又继承自System.Object类c.值类型不能继承,只能实现接口(不太懂)
2.引用类型
a. string、数组、类、接口、委托
b. 引用类型都派生自System.Object类
c. 引用类型可以继承
3.赋值
a. 值类型变量赋值会拷贝一个副本。
b.引用类型变量赋值是复制对对象的引用。
二.值传递和引用传递(值类型和引用类型作为参数传值)
1.值传递
a.
static void M1(int num) { num++; } int num = 10; M1(num); Console.WriteLine(num); //输出结果为10
1 //Question:2 2 Person p = new Person(); 3 p.name = "km"; 4 M2(p); 5 Console.WriteLine(p.name);//输出结果:ly 6 7 static void M2(Person p1) 8 { 9 p1.name = "ly"; 10 }
1 static void M3(Person p1) 2 { 3 Person p3 = new Person(); 4 p1 = p3; 5 p1.name = "lx"; 6 } 7 8 //Q3: 9 Person p2 = new Person(); 10 p2.name = "cc"; 11 M3(p2); 12 Console.WriteLine(p2.name);//输出结果为:cc
b. 待续……
2.引用传递
三.待续……