• .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("参数不为空");
                }
            }
  • 相关阅读:
    三种方式循环打印1-100的值
    线程中put(None)和主函数中put(None)的区别和用法
    进程、线程这篇博客,让你傻傻的一次就能记清楚
    单生产者进程和单消费者进程
    队列
    初始线程
    常见面试题之*args
    常见面试题之*args 和 **kwargs 的使用
    闭包函数之函数加括号和不加括号的意义
    仓鼠找sugar II
  • 原文地址:https://www.cnblogs.com/stupidanimal/p/7229053.html
Copyright © 2020-2023  润新知