一个函数返回多个值 C#
 1
2 Public void GetValues(string UserID,string PassWord,out string string UserName,out bool flag)
Public void GetValues(string UserID,string PassWord,out string string UserName,out bool flag)
3 {
{
4 //在使用一些判断为返回值赋值时,最好先在判断外赋上初始值,否则易报“离开当前方法之前必须对out 参数赋值”错误
      //在使用一些判断为返回值赋值时,最好先在判断外赋上初始值,否则易报“离开当前方法之前必须对out 参数赋值”错误
5 
 
6 UserName = "";
      UserName = "";
7 flag = true;
      flag = true;
8 
 
9 if(UserID == 1 && Password == "123")
      if(UserID == 1 && Password == "123")
10 {
      {
11 UserName = "小白";
          UserName = "小白";
12 }
      }
13 else
      else
14 {
      {
15 flag = false;
          flag = false;
16 }
      }
17 }
}
18
19 private void btnLogin_Click(object sender, System.Web.UI.ImageClickEventArgs e)
private void btnLogin_Click(object sender, System.Web.UI.ImageClickEventArgs e)
20 {
{
21 //先对返回的参数进行声明
      //先对返回的参数进行声明
22 string Name;
      string Name;
23 string UserName;
      string UserName;
24 bool Flag;
      bool Flag;
25
26 GetValues("1","123",out Name, out Flag);
      GetValues("1","123",out Name, out Flag);
27 
         
28 //此时Name和Flag的值已返回
      //此时Name和Flag的值已返回
29 //Name = "小白"
      //Name = "小白"
30 //Flag = true
      //Flag = true
31
32 if(Flag == true)
      if(Flag == true)
33 {
      {
34 UserName = Name;
            UserName = Name;
35 //UserName被赋值为小白
            //UserName被赋值为小白
36 }
      }
37 }
}
38
39

2
 Public void GetValues(string UserID,string PassWord,out string string UserName,out bool flag)
Public void GetValues(string UserID,string PassWord,out string string UserName,out bool flag)3
 {
{4
 //在使用一些判断为返回值赋值时,最好先在判断外赋上初始值,否则易报“离开当前方法之前必须对out 参数赋值”错误
      //在使用一些判断为返回值赋值时,最好先在判断外赋上初始值,否则易报“离开当前方法之前必须对out 参数赋值”错误5
 
 6
 UserName = "";
      UserName = "";7
 flag = true;
      flag = true;8
 
 9
 if(UserID == 1 && Password == "123")
      if(UserID == 1 && Password == "123")10
 {
      {11
 UserName = "小白";
          UserName = "小白";12
 }
      }13
 else
      else14
 {
      {15
 flag = false;
          flag = false;16
 }
      }17
 }
}18

19
 private void btnLogin_Click(object sender, System.Web.UI.ImageClickEventArgs e)
private void btnLogin_Click(object sender, System.Web.UI.ImageClickEventArgs e)20
 {
{21
 //先对返回的参数进行声明
      //先对返回的参数进行声明22
 string Name;
      string Name;23
 string UserName;
      string UserName;24
 bool Flag;
      bool Flag;25

26
 GetValues("1","123",out Name, out Flag);
      GetValues("1","123",out Name, out Flag);27
 
         28
 //此时Name和Flag的值已返回
      //此时Name和Flag的值已返回29
 //Name = "小白"
      //Name = "小白"30
 //Flag = true
      //Flag = true31

32
 if(Flag == true)
      if(Flag == true)33
 {
      {34
 UserName = Name;
            UserName = Name;35
 //UserName被赋值为小白
            //UserName被赋值为小白36
 }
      }37
 }
}38

39

out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字。尽管作为 out 参数传递的变量不需要在传递之前进行初始化,但需要调用方法以便在方法返回之前赋值。ref 和 out 关键字在运行时的处理方式不同,但在编译时的处理方式相同。因此,如果一个方法采用 ref 参数,而另一个方法采用 out 参数,则无法重载这两个方法。
参考MSDN
 
                    
                 


 
       
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号