【问题标题】:The best overloaded method match for 'DBFunctions.getRunNo(int, ref string, ref int, int)' has some invalid arguments'DBFunctions.getRunNo(int, ref string, ref int, int)' 的最佳重载方法匹配有一些无效参数
【发布时间】:2013-12-30 03:01:58
【问题描述】:

我不确定我做错了什么。第一种方法,我在一个DBFunctions类中定义了一些参数ByRef

 public string getRunNo(int REQ_ID, ref string file_name, ref int run_no, int MEMBER_ID)
        {
            string vError = String.Empty;
            Oracle.DataAccess.Client.OracleParameter[] parameters;
            parameters = new Oracle.DataAccess.Client.OracleParameter[6];
            for (int i = 0; i <= 6; i++)
            {
                parameters[i] = new Oracle.DataAccess.Client.OracleParameter();
            }
            parameters[0].ParameterName = "vREQ_ID";
            parameters[0].Value = REQ_ID;
            parameters[0].Direction = System.Data.ParameterDirection.Input;

            parameters[1].ParameterName = "vMEMBER_ID";
            parameters[1].Value = MEMBER_ID;
            parameters[1].Direction = System.Data.ParameterDirection.Input;

            parameters[2].ParameterName = "vFILE_TYPE";
            parameters[2].Value = "ENQUIRY";
            parameters[2].Direction = System.Data.ParameterDirection.Input;

            parameters[3].ParameterName = "vSUB_FILE_TYPE";
            parameters[3].Value = "E";
            parameters[3].Direction = System.Data.ParameterDirection.Input;

            parameters[4].ParameterName = "vFILE_NAME";
            parameters[4].Direction = System.Data.ParameterDirection.Output;

            parameters[5].ParameterName = "vRUN_NO";
            parameters[5].Direction = System.Data.ParameterDirection.Output;

            parameters[6].ParameterName = "vERR";
            parameters[6].Direction = System.Data.ParameterDirection.Output;

            string V_Error;
            OracleCommand MyCom = new OracleCommand("P_GENERATE_SIMAH_FILE_NAME", conn);

            MyCom.CommandType = CommandType.StoredProcedure;
            foreach (OracleParameter p in parameters)
            {
                MyCom.Parameters.Add(p);
            }

            try
            {
                MyCom.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                V_Error = ex.Message;
                return V_Error;
            }
            V_Error = MyCom.Parameters["vERR"].Value.ToString();
            if (V_Error == "-")
            {

            }

            return V_Error;
        }

这里,在第二个类中,我正在实例化它并调用函数

res = df.getRunNo(REQ_ID, file_name, RUN_NO, head.MEMBER_ID);

但我收到以下错误:

最佳重载方法匹配'DBFunctions.getRunNo(int, ref string, ref int, int)' 有一些无效参数

您能否确定错误的原因。如果我删除“ref”,它可以正常工作,但我需要引用变量。

谢谢, 诺鲁尔

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    如果你有refout参数,你需要在调用方法时将refout添加到参数中:

    res = df.getRunNo(REQ_ID, ref file_name, ref RUN_NO, head.MEMBER_ID);
    

    话虽如此,我看不出你在getRunNo 中分配给file_namerun_no 的位置,所以看起来这些参数根本不需要是ref

    【讨论】:

    • 感谢您的帮助。是的,我错过了将值分配回引用的参数。
    猜你喜欢
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    相关资源
    最近更新 更多