一道C#代码问题!关于ref变量,烦请各位大侠帮忙!

2024年12月02日 17:57
有1个网友回答
网友(1):

ref代表引用。如果你用过C++可能会说起来更明白一些。
这是C#函数调用的概念问题。对于一个函数的参数列表,不加ref时,对于值类型的参数,在传参的时候,是将参数的值复制了一份传进来,若是加了ref则是直接对这个参数进行处理!而对于引用类型的参数差别不大。以你的函数为例:
public bool LoginNormal(string gTCardNumber, ref User currentUser)
如果我这么调用:LoginNormal(myName, myUser)------myName和myUser前面已经定义好的
实际上就是将myName复制了一份传给LoginNormal函数,而myUser是直接操作的。具体效果是,在LoginNormal里,gTCardNumber有什么操作,不会影响myName;但是currentUser有什么操作,会直接改变myUser。
【注】User类型应该是你定义的类,而类是引用类型的数据,ref User currentUser里面这个ref加和不加,效果是一样的。
给你做个最简单的例子吧,对于值类型的数据,这个ref才有明显的作用:
先定义一个数int a=5;看以下两种情况
void DataOp1(int n)
{
n=n+1;
}
这个函数,调用DataOp1(a)之后,a没有变化,因为将a的值复制一份传给函数了。
void DataOp2(ref int n)
{
n=n+1;
}
这个函数,调用DataOp2(a)之后,a=6,因为直接操作的a