C# передача значения параметра

Я использую 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 параметры?

5
задан Peter Mortensen 20 August 2012 в 16:18
поделиться

4 ответа

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

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

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

7
ответ дан 13 December 2019 в 22:02
поделиться

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

bool boolIsOK = true;
gm.GetContacts("chendur.pandiya@gmail.com", "******", out boolIsOK, out dt, out strerr)
0
ответ дан 13 December 2019 в 22:02
поделиться

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

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.

1
ответ дан 13 December 2019 в 22:02
поделиться

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

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

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

2
ответ дан 13 December 2019 в 22:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: