一个方法返回多个值的解决方法[转]
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];
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"]);
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 }
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 }

浙公网安备 33010602011771号