c#高级参数关键字out、ref、params

xiaoxiao2021-02-28  22

前言

    c#有三种高级参数out,ref,params,他们各自有各自的作用。

params

    可变参数,params后面必须跟数组,之后不允许任何其他的参数,并且在方法中只允许有一个params关键字。例如:

public static int add(params int[] numbers) { int sum = 0; foreach(int i in numbers) { sum = sum + i; } return sum; }

out

    主要用作程序的输出函数,与之对应的还有in函数,当然是程序的输入函数。

    out关键字为引用类型,方法参数上的out方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调方法时,在方法中对参数所做的任何更改都将放映到该变量中。

public static void add(out int i) { i = 0; i++; }

ref

   引用参数,同样为引用类型。

public static void add(ref int i) { i++; }

其实,out和ref没有什么本质上的区别,但从代码上可以看出

1.用out关键字修饰的参数必须在方法内初始化,并且out可以返回多个值。

2.用ref关键字修饰的关键字需要在使用前先初始化。

实践应用

   项目中需要分页查询,表格右下端需要显示总条数的,但是由于使用的是真分页,每次的sql查询只是查询特定范围之间的,所以需要一个参数代表总条数,符合输出参数和引用类型的特点,于是使用out关键字。下述代码为D层代码,仅供参考:

public List<VM_OutGoodsLog> goodsOnOut(VM_OutGoodsLog vmGoodsOnOut, int pageCount, int pageSize, out int total) { //设置分页开始记录和结果记录 int begin = (pageSize - 1) * pageCount; string sql = "select * from t_item"; string sqldt = sql + " limit " + begin + "," + pageCount; DataTable dt = MySQLHelper.ExecuteDataTable(sqldt); DataTable dtCount = MySQLHelper.ExecuteDataTable(sql); List<VM_OutGoodsLog> listCount = DatatableToList.ConvertToList<VM_OutGoodsLog>(dtCount); total = listCount.Count; return DatatableToList.ConvertToList<VM_OutGoodsLog>(dt); }

转载请注明原文地址: https://www.6miu.com/read-1750341.html

最新回复(0)