C#的out参数和ref参数

刚学C#的时候看过out参数和ref参数的用法,但是一直没有根据实际项目做过。

今天写WebService接口的时候用到了:

本来我是写一个方法查询一个数据库,返回一个DataSet给别人调用,没问题,完成了(我的上篇博客写有),但是项目总是变化 的,有人要求同时将DataSet的总记录条数也返回给他们调用。本来这也好解决,我想到的有以下几种方法:

1.给DataSet的DataTable增加一个字段,全部存放一样的内容,即总记录数。(数据冗余,他们希望得到更好的解决方法)

2.再写一个方法,专门用来获取总记录数。(他们想一次调用,同时获得DataSet和总记录条数,而且调用两个方法担心会不稳定不可靠,这点我也理解)

3.写一个重载方法。

上面都是比较笨的解决方案,这里受一个C#QQ群网友的提示才想到了out参数。(如此简单方便,以前也看过,竟然需要用的时候没想到):

 public DataSet Search973Data(string dataName, string prodType, string startTime, string endTime, double dStartLong, double dEndLong, double dStartLat, double dEndLat, int onPage, int countOfPerPage,out int totalCount)
 {

    //  ......code......

    totalCount=ds.Tables[0].Rows.Count;  //将总条数赋值给out参数返回

    //  ......code......

 }


在此简要回顾一下out和ref参数。

out和ref关键字都是修饰参数的,表示是引用传递。

它们的区别在于:ref要求参数在传入之前需要进行初始化,而out则不需要进行初始化。

由于ref参数必须初始化再传递,所以在函数内部可以直接使用参数的值。同理,由于out参数在传递之前并不保证初始化,所以在函数内初始化该参数之前不能直接使用它的值,传递之前i的赋值对函数本身也没有实际意义。

理论上讲,out和ref并没有严格的使用限制。

通常,如果该参数仅仅是作为返回值参数就用out修饰;如果该参数的数据需要参与函数内部运算,则用ref修饰。




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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值