一个函数返回多个值 C#
1
2
Public 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
19
private 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

2
Public 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
else14
{15
flag = false;16
}17
}18

19
private 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 = true31

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


浙公网安备 33010602011771号