1. public static bool Login(ref UserInfo user) { user = new UserInfo(); } //原来的user改变2. public static bool Login(UserInfo user) { user = new UserInfo(); } //原user没改变...
ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。class RefExample { static void Method(ref int i) { i = 44; } static void Main() { int val = 0; Method(ref val); // val is now 44 } }参考:http://msdn.microsoft.com/zh-cn/library/14akc2c7(VS.80).aspx
使用ref前必须对变量赋值
public static bool Login(ref UserInfo user)
{
user = new UserInfo();
}
//原来的user改变2.
public static bool Login(UserInfo user)
{
user = new UserInfo();
}
//原user没改变...
{
static void Method(ref int i)
{
i = 44;
}
static void Main()
{
int val = 0;
Method(ref val);
// val is now 44
}
}参考:http://msdn.microsoft.com/zh-cn/library/14akc2c7(VS.80).aspx
UserInfo是类名,不是属性。
这是不用ref,和用了ref的区别
我画了个传参示例图,本来想传上来的,不过这好像不支持直接发,我放我空间里面了
http://hi.csdn.net/space-7877484-do-album-picid-631344.html希望可以帮到你
Static void ShowDouble(int val)
{
val *=2;
}
int inum = 5;
ShowDouble(inum );
Console.WriteLine("inum = {0}", inum);
结果是5例2
Static void ShowDouble(ref int val)
{
val *=2;
}
int inum = 5;
ShowDouble(ref inum );
Console.WriteLine("inum = {0}", inum);
结果是10
http://hi.csdn.net/space-7877484-do-album-picid-631388.html
相信LZ也基本明白了.
說下我個人理解(菜鳥水平)
ref 引用傳值
他的特點就是 一個值可以傳進方法里
在方法里計算完成后還可以傳出來
和Out 有點像
不過Out是必須先賦值才能用.而Ref不用
这个问题和什么类型关系不大其实这么理解,调用方法传递的参数,都是复制引用进行传递
不管这个参数是引用类型 还是值类型用了ref,就是复制引用的引用进行传递了,如果你了解指针,理解会形象一些。
例2
Static void ShowDouble(ref int val)
{
val *=2;
}
int inum = 5;
ShowDouble(ref inum );
Console.WriteLine("inum = {0}", inum);
结果是10
我的理解:先定义int inum = 5;然后把这个值传进ShowDouble()这个方法,也就是ShowDouble(ref inum );
int inum = 5;在这个方法ShowDouble(ref inum )处理之后返回,然后再WriteLine()出来!这样理解对吗?
使用ref前必须对变量赋值