zoukankan      html  css  js  c++  java
  • .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("参数不为空");
                }
            }
  • 相关阅读:
    在web.config 的config
    有道理
    showModalDialog和showModelessDialog使用心得
    VBScript的 trim()
    RetroGuard的使用方法(转)
    NHibernate 的语句的问题
    Web控件TreeView展开无闪烁的两个解决方法
    如何在类库项目中添加Web窗体文件
    签名活动链接
    __EVENTTARGET为空或不是对象
  • 原文地址:https://www.cnblogs.com/stupidanimal/p/7229053.html
Copyright © 2011-2022 走看看