.net中params以前沒關註過的一個現象
阿新 • • 發佈:2017-07-24
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以前沒關註過的一個現象