1.在传送值类型时: 在传送参数给方法的时候,对于值类型的参数,在方法里面对参数所做的所有修改,在方法结束后不会改变原来的值(就是传值)。如果前面加上ref的话,方法结束后,所做的修改会改变原来的值(就是传引用)。


calss Test...{
public void NoRef(int i)
...{
i = 102;
}
public void Ref(ref int i)
...{
int i =200
}
static void Main()
...{
int i = 100;
NoRef(i);
Console.Write(i);//结果是100
Ref(i);
Console.Write(ref i);//结果是200
}
}2. 传送引用类型: 对于这个大家就比较好奇了,在值类型里面本来就是传引用,用不着加ref,加了它有什么用 呢。我也是刚知道。看下面代码吧
class People
...{
int age = 30 ;
}
class Test1
...{
public void NoRef1(People p)
...{
p.age = 40;
}
public void NoRef2(People p)
...{
p = new People()
p.age = 50;
}
public void Ref(ref People p)
...{
p = new People()
p.age = 60;
}
static void Main()
...{
People p =new People();
NoRef(P);
Console.Write(p.age);//40
NoRef2(P);
Console.Write(p.age);//40
Ref(out P);
Console.Write(p.age);//60
}
}在没有使用ref的情况下,在方法里面new 一个对象,这个对象的值就不会影响到原来的值。如果使用了ref,new完以后所做的修改,还是会影响原来的值。
3 。out 的用法基本上和ref差不多,所不同的是,用out 的时候,传入的参数可以不初值化。
本文探讨了C#中值类型和引用类型的参数传递机制,包括使用ref和out关键字的区别。通过实例展示了在方法调用过程中,不同类型参数的变化情况及其对原始变量的影响。
81

被折叠的 条评论
为什么被折叠?



