2010-06-09 14 views
5

Używam contactsreader.dll do importowania moich kontaktów Gmail. Jedna z moich metod ma parametr out. Robię to:Wartość parametru C# na wyjściu

Gmail gm = new Gmail(); 
DataTable dt = new DataTable(); 
string strerr; 
gm.GetContacts("[email protected]", "******", true, dt, strerr); 
// It gives invalid arguments error.. 

A moja klasa Gmail ma

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

jestem przechodzącej poprawne wartości dla out parametrów?

Odpowiedz

6

Trzeba przekazać je jako deklarowanych zmiennych, za pomocą słowa kluczowego out:

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

Innymi słowy, nie przechodzą do wartości tych parametrów, które otrzymują je na drodze out. Tylko jedna droga.

2

Musisz umieścić „out” podczas wywoływania metody - gm.GetContacts("[email protected]", "******", out yourOK, out dt, out strerr);

A tak przy okazji, nie trzeba robić DataTable dt = new DataTable(); przed wywołaniem. Chodzi o to, że metoda GetContacts zainicjuje zmienne out.

Link do MSDN tutoriala.

0

Proponuję, żeby przekazać zmienną bool zamiast wartości dosłownym i umieścić na zewnątrz słowa kluczowego przed nimi.

bool boolIsOK = true; 
gm.GetContacts("[email protected]", "******", out boolIsOK, out dt, out strerr) 
1

Ponieważ definicja swojej funkcji

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

wymaga, aby przekazać pewne out parametry, trzeba respektować podpis metody podczas wywoływania go

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

Zauważ, że out parametry są po prostu zastępcze, więc nie musisz podawać wartości przed przekazaniem ich do metody. Możesz znaleźć więcej informacji na temat out parametrów na MSDN website.

2

myślę, że to będzie pomocne dla Ciebie ...

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

To pytanie ma już zaakceptowane odpowiedź i nie wydaje się, aby dodali coś, co nie zostało objęte w nim. – JamesT

+1

@J Tolley: Całkiem poprawnie, ale ta odpowiedź była przeznaczona tylko do * seryjnego upvotingu * między trojgiem przyjaciół i nie miała być przydatna. Większość jego odpowiedzi jest umieszczana na starych pytaniach takich jak ta. Zobacz jednego znajomego tutaj: http://stackoverflow.com/questions/28085249/change-css-color-property-dynamically-on-click/28085568#28085568 –

Powiązane problemy