1. 程式人生 > >.net中params以前沒關註過的一個現象

.net中params以前沒關註過的一個現象

params bsp main ndt dir oid sta dbnull bnu

  在看別人寫的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以前沒關註過的一個現象