2010-06-09 80 views
5

我使用contactsreader.dll来导入我的Gmail联系人。我的方法之一是out参数。我这样做:C#出参数值传递

Gmail gm = new Gmail(); 
DataTable dt = new DataTable(); 
string strerr; 
gm.GetContacts("[email protected]", "******", 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参数?

回答

6

你需要他们通过为声明的变量,与out关键字:

bool isOk; 
DataTable dtContact; 
string strError; 
gm.GetContacts("[email protected]", "******", 
    out isOk, out dtContact, out strError); 

换句话说,你不值传递给这些参数,他们接到的方式out。只有一种方法。

2

你必须调用方法时把“走出去” - gm.GetContacts("[email protected]", "******", out yourOK, out dt, out strerr);

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

LinkMSDN教程。

0

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

bool boolIsOK = true; 
gm.GetContacts("[email protected]", "******", out boolIsOK, out dt, out strerr) 
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参数的更多信息。

2

我认为你这样会很有帮助...

public class Program 
{ 
    static void Method(out string param) 
    { 
    param = "Beautifull Bangladesh"; 
    } 
    static void Main() 
    { 
     string valueOut; 
     Method(out valueOut); 

     Console.WriteLine(valueOut); 
     Console.ReadKey(); 
    } 
} 
+1

这个问题已经有一个公认的答案,你似乎不具有添加任何东西,没有覆盖它。 – JamesT 2015-02-04 10:43:53

+1

@J Tolley:很对,但是这个答案只针对三个朋友之间的*系列upvoting *而设计的,并不打算有用。他的大部分答案都发布在这样的老问题上。在这里看到一个朋友:http://stackoverflow.com/questions/28085249/change-css-color-property-dynamically-on-click/28085568#28085568 – 2015-02-06 09:46:40