首页 > 代码库 > .net中params以前没关注过的一个现象
.net中params以前没关注过的一个现象
在看别人写的ado库的时候,有这样一个判断
private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, string cmdText, MySqlParameter[] cmdParms) { if (conn.State != ConnectionState.Open) conn.Open(); cmd.Connection = conn; cmd.CommandText = cmdText; if (trans != null) cmd.Transaction = trans; cmd.CommandType = CommandType.Text;//cmdType; if (cmdParms != null) { foreach (MySqlParameter parameter in cmdParms) { if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) && (parameter.Value == null)) { parameter.Value = DBNull.Value; } cmd.Parameters.Add(parameter); } } }
就是红色的那部分。
自己试了试,发现如果参数里有像 类似 params object[] Parameters,这种参数的,这个Parameters变量永远不会为null,如果真的没有写任何参数,那么.net会默认给一个
object[0]的数组放到这个参数里面。那么这样以后再用这个参数,直接放心用Foreach就行了。
顺便贴上测试的小例子。
static void Main(string[] args) { Work(); Console.WriteLine("This is the end of program"); Console.ReadKey(true); } private static void Work(params string[] strParam) { if (strParam == null) { Console.WriteLine("没有任何参数"); } else { Console.WriteLine("参数不为空"); } }
.net中params以前没关注过的一个现象
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。