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

刚才看到园子里一个兄弟讨论一个方法返回多个值的问题。 在开发过程中,总会遇到这个问题。这里说一下其他的解决方法。当然,这些方法是前人总结出来的,我只是拿来主义而已。

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

None.gif      public   int [] ReturnMultiValue()
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        
int[] retvalue = new int[2];
InBlock.gif        
//进行一些操作,把多个值存入int数组
InBlock.gif
        return retvalue;
ExpandedBlockEnd.gif    }

None.gif    
// 可以这样使用
None.gif
     int [] values = ReturnMultiValue();
None.gif    
int  a = values[ 0 ];
None.gif    
int  b = values[ 1 ];

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

None.gif   public  Hashtable ReturnMultiValue()
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        Hashtable retvalue 
= new Hashtable();
InBlock.gif        
//进行一些操作,把多个值存入Hashtable
InBlock.gif        
//retvalue["xxx"] = value1;
InBlock.gif        
//retvalue["yyy"] = value2;
InBlock.gif
        return retvalue;
ExpandedBlockEnd.gif    }

None.gif    
// 可以这样使用
None.gif
    Hashtable values  =  ReturnMultiValue();
None.gif    Type1 type1 
=  (Type1)(values[ " xxx " ]);
None.gif    Type2 type2 
=  (Type2)(values[ " yyy " ]);

 

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

 

None.gif // 结果类
None.gif
public   class  Result
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
private int value1;
InBlock.gif
InBlock.gif    
public int Value1
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif        
get dot.gifreturn value1; }
ExpandedSubBlockStart.gifContractedSubBlock.gif        
set dot.gif{ value1 = value; }
ExpandedSubBlockEnd.gif    }

InBlock.gif    
private string vlaue2;
InBlock.gif
InBlock.gif    
public string Vlaue2
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif        
get dot.gifreturn vlaue2; }
ExpandedSubBlockStart.gifContractedSubBlock.gif        
set dot.gif{ vlaue2 = value; }
ExpandedSubBlockEnd.gif    }

InBlock.gif    
private User value3;//也可以是自定义类型
InBlock.gif

InBlock.gif    
public User Value3
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif        
get dot.gifreturn value3; }
ExpandedSubBlockStart.gifContractedSubBlock.gif        
set dot.gif{ value3 = value; }
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif
None.gif
public   class  Test
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
public Result ReturnMultiValue()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        Result retvalue 
= new Result();
InBlock.gif        
//进行一些操作,把多个值存入结果类
InBlock.gif        
//retvalue.Value1 = value1;
InBlock.gif        
//retvalue.Value2 = value2;
InBlock.gif        
//retvalue.Value3 = value3;
InBlock.gif
        return retvalue;
ExpandedSubBlockEnd.gif    }

InBlock.gif    Result values 
= ReturnMultiValue();
InBlock.gif    
int value1 = values.Value1;
InBlock.gif    
string value2 = values.Value2;
InBlock.gif    User value3 
= values.Value3;
InBlock.gif    
ExpandedBlockEnd.gif}

(注:文章里的代码只是为了说明思路,随手写的,并不能真正运行。)

转载于:https://www.cnblogs.com/291099657/archive/2009/09/08/1562717.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值