Передача значения параметра C # out - PullRequest
5 голосов
/ 09 июня 2010

Я использую 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 ]

6 голосов
/ 09 июня 2010

Вам нужно передать их как объявленные переменные с ключевым словом out:

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

Другими словами, вы не передаете значения этим параметрам, они получают их по пути out. Только в одну сторону.

2 голосов
/ 09 июня 2010

Вы должны поставить "out" при вызове метода - gm.GetContacts("chendur.pandiya@gmail.com", "******", out yourOK, out dt, out strerr);

И, кстати, вам не нужно делать DataTable dt = new DataTable(); перед звонком. Идея состоит в том, что метод GetContacts инициализирует ваши out переменные.

Ссылка на MSDN учебник.

1 голос
/ 09 июня 2010

Так как определение вашей функции

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 параметры являются просто местозаполнителями, поэтому вам не нужно указывать значение перед передачей их методу. Более подробную информацию о out параметрах можно найти на веб-сайте MSDN .

0 голосов
/ 09 июня 2010

Я бы посоветовал передать переменную bool вместо литерального значения и поставить перед ними ключевое слово out.

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