一个方法返回多个值的解决方法
刚才看到园子里一个兄弟讨论一个方法返回多个值的问题。 在开发过程中,总会遇到这个问题。这里说一下其他的解决方法。当然,这些方法是前人总结出来的,我只是拿来主义而已。
一、如果返回值类型相同的话,可以返回一个数组
public int[] ReturnMultiValue()
{
int[] retvalue = new int[2];
//进行一些操作,把多个值存入int数组
return retvalue;
}
//可以这样使用
int[] values=ReturnMultiValue();
int a=values[0];
int b=values[1];
{
int[] retvalue = new int[2];
//进行一些操作,把多个值存入int数组
return retvalue;
}
//可以这样使用
int[] values=ReturnMultiValue();
int a=values[0];
int b=values[1];
二、如果返回的值类型不同,可以使用Hashtable:
public Hashtable ReturnMultiValue()
{
Hashtable retvalue = new Hashtable();
//进行一些操作,把多个值存入Hashtable
//retvalue["xxx"] = value1;
//retvalue["yyy"] = value2;
return retvalue;
}
//可以这样使用
Hashtable values = ReturnMultiValue();
Type1 type1 = (Type1)(values["xxx"]);
Type2 type2 = (Type2)(values["yyy"]);
{
Hashtable retvalue = new Hashtable();
//进行一些操作,把多个值存入Hashtable
//retvalue["xxx"] = value1;
//retvalue["yyy"] = value2;
return retvalue;
}
//可以这样使用
Hashtable values = ReturnMultiValue();
Type1 type1 = (Type1)(values["xxx"]);
Type2 type2 = (Type2)(values["yyy"]);
三、我最喜欢的方法:把要返回的结果封装到一个结果类里面,然后在方法内部new一个结果类,赋值并返回。
当然封装成结构也可以,看你怎么用了。
//结果类
public class Result
{
private int value1;
public int Value1
{
get { return value1; }
set { value1 = value; }
}
private string vlaue2;
public string Vlaue2
{
get { return vlaue2; }
set { vlaue2 = value; }
}
private User value3;//也可以是自定义类型
public User Value3
{
get { return value3; }
set { value3 = value; }
}
}
public class Test
{
public Result ReturnMultiValue()
{
Result retvalue = new Result();
//进行一些操作,把多个值存入结果类
//retvalue.Value1 = value1;
//retvalue.Value2 = value2;
//retvalue.Value3 = value3;
return retvalue;
}
Result values = ReturnMultiValue();
int value1 = values.Value1;
string value2 = values.Value2;
User value3 = values.Value3;
}
public class Result
{
private int value1;
public int Value1
{
get { return value1; }
set { value1 = value; }
}
private string vlaue2;
public string Vlaue2
{
get { return vlaue2; }
set { vlaue2 = value; }
}
private User value3;//也可以是自定义类型
public User Value3
{
get { return value3; }
set { value3 = value; }
}
}
public class Test
{
public Result ReturnMultiValue()
{
Result retvalue = new Result();
//进行一些操作,把多个值存入结果类
//retvalue.Value1 = value1;
//retvalue.Value2 = value2;
//retvalue.Value3 = value3;
return retvalue;
}
Result values = ReturnMultiValue();
int value1 = values.Value1;
string value2 = values.Value2;
User value3 = values.Value3;
}
(注:文章里的代码只是为了说明思路,随手写的,并不能真正运行。)