C#值传递和按引用传递

时间:2023-03-08 16:48:14
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";
}
}

图解:

C#值传递和按引用传递

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDM1NTUyMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

再看一下引用传递(传递值类型和引用类型)   

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#值传递和按引用传递

版权声明:本文博客原创文章,博客,未经同意,不得转载。