首页 > 代码库 > C#值传递与引用传递
C#值传递与引用传递
知识点:
值类型和引用类型
对于值类型来说,栈中存储的是直接使用的数据
对于引用类型来说,栈中存储的是堆中对象的地址
值传递和引用传递
对于值传递,传递的是栈中保存的数据
对于引用传递,传递的是栈本身的地址
先看一下值传递(传递值类型和引用类型)
class Program { static void Main(string[] args) { //引用类型的赋值,只是赋值了对象在堆中的地址 Person p = new Person(); //声明的一个Person类,包含有Name属性 p.Name = "yzk"; D2(p); Console.WriteLine(p.Name); //返回值为jk //值类型的赋值,赋值了具体的值,而不是地址 int n = 10; D1(n); Console.WriteLine(n); //返回值为10 Console.ReadKey(); } //值类型的值传递 static void D1(int m) { m = m + 1; } //引用类型的值传递 static void D2(Person p1) { p1.Name = "jk"; } }图解:
再看一下引用传递(传递值类型和引用类型)
class Program { static void Main(string[] args) { Person p = new Person(); //声明的一个Person类,包含有Name属性 p.Name = "jk"; D2(ref p); //引用传递:传递的是栈本身的地址 Console.WriteLine(p.Name); //返回值sk int n = 10; D1(ref n); //引用传递:传递的是栈本身的地址 Console.WriteLine(n); //返回值11 Console.ReadKey(); } //值类型的引用传递 static void D1(ref int a) //ref就是表示引用传递 { a = a + 1; } //引用类型的引用传递 static void D2(ref Person per) { per = new Person(); per.Name = "sk"; } }图解
C#值传递与引用传递
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。