2010-06-09 17 views
5

Estoy usando contactsreader.dll para importar mis contactos de Gmail. Uno de mis métodos tiene el parámetro out. Estoy haciendo esto:Valor de parámetro de salida C# pasando

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

Y mi clase de Gmail tiene

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

¿Estoy pasando los valores correctos para out parámetros?

Respuesta

6

lo necesario para pasar como variables declaradas, con la palabra clave out:

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

En otras palabras, usted no pasa los valores de estos parámetros, los reciben en el camino out. Solo de una manera.

2

usted tiene que poner "out" al llamar al método - gm.GetContacts("[email protected]", "******", out yourOK, out dt, out strerr);

Y, por cierto, que no tienen que ver DataTable dt = new DataTable(); antes de llamar. La idea es que el método GetContacts inicialice sus variables out.

Link a MSDN tutorial.

0

Sugiero que pase una variable bool en lugar de un valor literal y coloque la palabra clave out antes que ellos.

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

Dado que la definición de la función

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

requiere que se pase algunos out parámetros, es necesario respetar la firma del método cuando se la invoca

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

Tenga en cuenta que out parámetros son solo marcadores de posición, por lo que no necesita proporcionar un valor antes de pasarlos al método. Puede encontrar más información sobre los parámetros out en el MSDN website.

2

Creo que esta será útil para usted ...

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

Esta pregunta ya tiene una respuesta aceptada y que no parecen tener añadido nada que no esté previsto en él. – JamesT

+1

@J Tolley: Muy bien, pero esta respuesta solo fue diseñada para * subirvotaciones en serie * entre tres amigos, y no fue pensada para ser útil. La mayoría de sus respuestas están publicadas en viejas preguntas como esta. Ver un amigo aquí: http://stackoverflow.com/questions/28085249/change-css-color-property-dynamically-on-click/28085568#28085568 –

Cuestiones relacionadas