【问题标题】:C# out parameter value passingC# out 参数值传递
【发布时间】:2023-04-09 04:22:02
【问题描述】:

我正在使用 contactsreader.dll 导入我的 Gmail 联系人。我的一种方法有out 参数。我正在这样做:

Gmail gm = new Gmail();
DataTable dt = new DataTable();
string strerr;
gm.GetContacts("chendur.pandiya@gmail.com", "******", true, dt, strerr);
// It gives invalid arguments error..

我的 Gmail 课程有

public void GetContacts(string strUserName, string strPassword,out bool boolIsOK,
out DataTable dtContatct, out string strError);

我是否为out 参数传递了正确的值?

【问题讨论】:

    标签: c# parameters out


    【解决方案1】:

    您需要将它们作为声明变量传递,使用 out 关键字:

    bool isOk;
    DataTable dtContact;
    string strError;
    gm.GetContacts("chendur.pandiya@gmail.com", "******",
        out isOk, out dtContact, out strError);
    

    换句话说,您不会将值传递给这些参数,它们会在out 的路上接收它们。只有一种方式。

    【讨论】:

      【解决方案2】:

      调用方法时必须“out”-gm.GetContacts("chendur.pandiya@gmail.com", "******", out yourOK, out dt, out strerr);

      顺便说一句,你不必在打电话之前做DataTable dt = new DataTable();。 这个想法是 GetContacts 方法将初始化您的 out 变量。

      LinkMSDN 教程。

      【讨论】:

        【解决方案3】:

        因为你的函数的定义

        public void GetContacts(string strUserName, string strPassword, out bool boolIsOK, out DataTable dtContatct, out string strError);
        

        要求你传递一些out参数,调用时需要尊重方法签名

        gm.GetContacts("<username>", "<password>", out boolIsOK, out dtContatct, out strError);
        

        请注意,out 参数只是占位符,因此您无需在将它们传递给方法之前提供值。您可以在MSDN website 上找到有关out 参数的更多信息。

        【讨论】:

          【解决方案4】:

          我建议你传递一个 bool 变量而不是字面值并将 out 关键字放在它们之前。

          bool boolIsOK = true;
          gm.GetContacts("chendur.pandiya@gmail.com", "******", out boolIsOK, out dt, out strerr)
          

          【讨论】:

            猜你喜欢
            • 2016-05-13
            • 1970-01-01
            • 2010-11-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多