C#out参数值传递

时间:2010-06-09 07:54:39

标签: c# parameters out

我正在使用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参数的正确值?

4 个答案:

答案 0 :(得分:6)

您需要使用out关键字将其作为声明的变量传递:

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

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

答案 1 :(得分:2)

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

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

LinkMSDN教程。

答案 2 :(得分:1)

自你的功能定义

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参数的更多信息。

答案 3 :(得分:0)

我建议您传递bool变量而不是文字值,并将out关键字放在它们之前。

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