2010-06-09 126 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