您的位置:首页 > 编程语言 > C#

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

2018-01-30 12:24 351 查看

前言

    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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: