一段C#给oracle加参数的代码,红色文字ParameterDirection判断有什么作用?解决思路

一段C#给oracle加参数的代码,红色文字ParameterDirection判断有什么作用??
 if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
                       (parameter.Value == null))
                        {
                            parameter.Value = DBNull.Value;
                        }

有啥作用???

 private static void AttachParameters(IDataParameter[] parameters, OracleCommand cmd)
        {
            if (parameters != null && parameters.Length > 0)
            {
               for(int index=0;index<parameters.Length;index++)
                {
                    if (parameters[index] is OracleParameter)
                    {
                     if ((parameters[index].Direction == ParameterDirection.InputOutput || parameters[index].Direction == ParameterDirection.Input) &&
                       (parameters[index].Value == null))
                        {
                            parameters[index].Value = DBNull.Value;
                        }

                        cmd.Parameters.Add(parameters[index]);
                    }
                    else
                    {
                        OracleParameter parameter = new OracleParameter();
                        parameter.DbType = parameters[index].DbType;
                        parameter.Value = parameters[index].Value;
                        if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
                       (parameter.Value == null))
                        {
                            parameter.Value = DBNull.Value;
                        }
                        parameter.ParameterName = parameters[index].ParameterName;
                        cmd.Parameters.Add(parameter);
                    }
                }
            }
        }

------解决方案--------------------