代码改变世界

一个方法返回多个值的解决方法[转]

2010-03-27 13:26  smat  阅读(149)  评论(0)    收藏  举报

一、如果返回值类型相同的话,可以返回一个数组

代码
 1 public int[] ReturnMultiValue()
 2     {
 3         int[] retvalue = new int[2];
 4         //进行一些操作,把多个值存入int数组
 5         return retvalue;
 6     }
 7     //可以这样使用
 8     int[] values=ReturnMultiValue();
 9     int a=values[0];
10     int b=values[1];


 二、如果返回的值类型不同,可以使用Hashtable:

代码
 1  public Hashtable ReturnMultiValue()
 2     {
 3         Hashtable retvalue = new Hashtable();
 4         //进行一些操作,把多个值存入Hashtable
 5         //retvalue["xxx"] = value1;
 6         //retvalue["yyy"] = value2;
 7         return retvalue;
 8     }
 9     //可以这样使用
10     Hashtable values = ReturnMultiValue();
11     Type1 type1 = (Type1)(values["xxx"]);
12     Type2 type2 = (Type2)(values["yyy"]);

 三、我最喜欢的方法:把要返回的结果封装到一个结果类里面,然后在方法内部new一个结果类,赋值并返回。
    当然封装成结构也可以,看你怎么用了。

代码
 1 //结果类
 2 public class Result
 3 {
 4     private int value1;
 5 
 6     public int Value1
 7     {
 8         get { return value1; }
 9         set { value1 = value; }
10     }
11     private string vlaue2;
12 
13     public string Vlaue2
14     {
15         get { return vlaue2; }
16         set { vlaue2 = value; }
17     }
18     private User value3;//也可以是自定义类型
19 
20     public User Value3
21     {
22         get { return value3; }
23         set { value3 = value; }
24     }
25 }
26 
27 public class Test
28 {
29     public Result ReturnMultiValue()
30     {
31         Result retvalue = new Result();
32         //进行一些操作,把多个值存入结果类
33         //retvalue.Value1 = value1;
34         //retvalue.Value2 = value2;
35         //retvalue.Value3 = value3;
36         return retvalue;
37     }
38     Result values = ReturnMultiValue();
39     int value1 = values.Value1;
40     string value2 = values.Value2;
41     User value3 = values.Value3;
42     
43 }