摘要
C#是一种广泛使用的面向对象编程语言,其中引用(ref)和指针(pointer)具有类似的作用。当声明一个变量时,可以使用引用(ref)关键字来声明一个引用类型的变量。这个变量可以用来访问其他对象,而不是复制对象的值。在引用变量声明时,使用关键字“ref”将变量的类型设置为引用类型,并将变量的声明包装在一对圆括号中。这样,该变量的值实际上是另一个对象的引用。引用类型的变量不能像值类型的变量那样直接使用赋值运算符进行复制,而是必须将其绑定到一个新对象上。
当引用类型的变量绑定到另一个对象时,这两个对象的引用是相同的。因此,当引用变量更改其绑定的对象时,所有引用它的对象都会相应地更改。引用类型的变量通常用于传递参数,这样可以在不创建新对象的情况下更改原始对象的状态。
正文
一个例子
static void Main(string[] args)
{
double salary = 9000;
Console.WriteLine(salary);
Add(ref salary);//注意这个ref必须
Console.WriteLine("加完工资:"+salary);
salary= Minus(salary);
Console.WriteLine("减完工资:" + salary);
}
public static void Add(ref double salary)
{
salary += 100;
}
public static double Minus(double salary)
{
salary -= 80;
return salary;
}
image.png
注:
相同点:方法的定义和调用都必须显示使用ref、out关键字。都会导致参数按引用传递。
不同点:传递给ref关键字的参数必须赋初始值,而out不用。out关键字会清空变量,即使变量已经赋值也不行,退出函数时所有out引用个变量都要赋值。
说明:ref的应用场景是内部对外部的值进行改变,而out则是内部对外部变量赋值。out一般用在函数有多个返回值。
网友评论