您的位置:首页 > 其它

可变数目参数:params关键字

2008-02-01 15:47 561 查看
开发过程中,某个方法需要的参数可能是不确定的,我们可以利用C#里的params关键字定义可变数目参数的方法。
下面是我在开发中利用sqlHelper封装的执行事务的方法
public class DataSource {
public static string _strConnection="server=192.168.1.95;database=zzb30dxa;uid=sa;pwd=100080";
//AppTools.GetConnectString("BeidaSoft.DXA.Adapter.exe.config")+"";
//获得数据库连接对象
private static SqlConnection GetConnection(string strConnection) {
SqlConnection conn=new SqlConnection(strConnection);
conn.Open();
return conn;
}
/// <summary>
/// 执行事务 使用了params关键字
/// </summary>
/// <param name="strSqls">sql 语句</param>
/// <returns>true or false</returns>
public static bool ExecuteTransaction(params string[] strSqls) {
SqlConnection conn=null;
conn=GetConnection(_strConnection);
using(SqlTransaction tran=conn.BeginTransaction()) {
try {
for(int i=0; i<strSqls.Length; i++) {
//使用sqlHelper
DAL.SqlHelper.SqlHelper.ExecuteNonQuery(tran, CommandType.Text, strSqls[i]);
}
tran.Commit();
return true;
} catch {
tran.Rollback();
return false;
} finally {
if(conn.State==ConnectionState.Open)
conn.Close();
conn.Dispose();
}
}
}
}

方法的使用
string strSql1="update ...";
string strSql2="delete ...";
string strSql3="select ...";
bool boolReturn=DataSource.ExecuteTransaction(strSql1,strSql2,strSql3);
ExecuteTransaction方法接受的是string类型的数组,但是我们并没有定义一个数组作为参数,因为有params关键字,C#编译器会
通过一系列指令将strSql1,strSql2,strSql3构造为一个数组,之后再调用ExecuteTransaction方法的代码。
使用params关键字的注意事项
1. 该参数必须为一维数组
2. 方法的最后一个参数才能使用
3. 接收任意类型的参数,将参数类型改为object 类型
4. params关键字使代码更加优雅,但是调用方法前首先有个构造数组的过程,性能上肯定会有影响(多数时候可以不用考虑)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: