一个函数返回多个值 C#
1
2Public void GetValues(string UserID,string PassWord,out string string UserName,out bool flag)
3{
4 //在使用一些判断为返回值赋值时,最好先在判断外赋上初始值,否则易报“离开当前方法之前必须对out 参数赋值”错误
5
6 UserName = "";
7 flag = true;
8
9 if(UserID == 1 && Password == "123")
10 {
11 UserName = "小白";
12 }
13 else
14 {
15 flag = false;
16 }
17}
18
19private void btnLogin_Click(object sender, System.Web.UI.ImageClickEventArgs e)
20{
21 //先对返回的参数进行声明
22 string Name;
23 string UserName;
24 bool Flag;
25
26 GetValues("1","123",out Name, out Flag);
27
28 //此时Name和Flag的值已返回
29 //Name = "小白"
30 //Flag = true
31
32 if(Flag == true)
33 {
34 UserName = Name;
35 //UserName被赋值为小白
36 }
37}
38
39
2Public void GetValues(string UserID,string PassWord,out string string UserName,out bool flag)
3{
4 //在使用一些判断为返回值赋值时,最好先在判断外赋上初始值,否则易报“离开当前方法之前必须对out 参数赋值”错误
5
6 UserName = "";
7 flag = true;
8
9 if(UserID == 1 && Password == "123")
10 {
11 UserName = "小白";
12 }
13 else
14 {
15 flag = false;
16 }
17}
18
19private void btnLogin_Click(object sender, System.Web.UI.ImageClickEventArgs e)
20{
21 //先对返回的参数进行声明
22 string Name;
23 string UserName;
24 bool Flag;
25
26 GetValues("1","123",out Name, out Flag);
27
28 //此时Name和Flag的值已返回
29 //Name = "小白"
30 //Flag = true
31
32 if(Flag == true)
33 {
34 UserName = Name;
35 //UserName被赋值为小白
36 }
37}
38
39
out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字。尽管作为 out 参数传递的变量不需要在传递之前进行初始化,但需要调用方法以便在方法返回之前赋值。ref 和 out 关键字在运行时的处理方式不同,但在编译时的处理方式相同。因此,如果一个方法采用 ref 参数,而另一个方法采用 out 参数,则无法重载这两个方法。
参考MSDN