c#值类型与引用类型

值类型参数

值类型(例如 intfloatstruct)在方法调用时会将实际的值进行拷贝,并传递给方法参数。因此,方法中对参数的任何修改不会影响调用方法时传入的原始变量。

以下为代码示例:

static void Main(string[] args)
{
    int n = 9;
    Modifyvalue(n);
    Console.WriteLine($"n after Modifyvalue :{n}");
    Point p2 = new Point{x=6,y=8};
    Changepoint(p2);
    Console.WriteLine($"Point after ModifyStruct: x = {p2.x}, y = {p2.y}");

}
static void Modifyvalue(int n)
{
    n = 666;
}
static void Changepoint(Point p1)
{
    p1.x = 10;
    p1.y = 20;
    
}

打印结果为:

引用类型参数 

引用类型(例如 classarray、string、object、委托、接口)在方法调用时会传递对象的引用,即指向对象的指针。因此,方法中对参数的任何修改会影响调用方法时传入的原始对象。

以下为代码示例:

class Student
{
    public string Name;
}
internal class Program
{
    static void Main(string[] args)
    {
       Student stu2 = new Student();
        stu2.Name = "rose";
        ModifyName(stu2);
        Console.WriteLine($"stu2 after ModifyName is:{stu2.Name}");
        int[] num = { 1, 2, 3 };
        ModifyArray(num);
        Console.WriteLine($"arr2 after ModifyArray is:{num[0]}");
    }
   static void ModifyName(Student stu1)
   {
        stu1.Name = "jack";
   }
    static void ModifyArray(int[] arr)
    {
        arr[0] = 666;
    }

}

 打印结果为:

总结 

传递值类型参数在调用方法时,值类型参数的值会被复制,因此方法内部的修改不会影响原始变量。

传递引用类型参数在调用方法时,引用类型参数的引用会被传递,因此方法内部的修改会影响原始对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值