Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Передача дескриптора в качестве параметра


Автор: Ozligia 9.4.2010, 03:04
Не знаю как сделать.
Вот такой пример

Код

int TestFunction()
{
System::String ^ sFileName = gcnew System::String("c:\testfile.test");
System::IO::TextReader ^ textReader();
OpenFileFunction(sFileName,textReader);
return 0;
}

int OpenFileFunction(System::String ^ sFileName, System::IO::TextReader ^ textReader)
{
textReader = gcnew System::IO::StreamReader(sFileName);
return 0;
}



Так вот при таком варианте при возвращении управления в TestFunction, textReader не имеет значения. Очевидно, что я передаю только значение, а не саму переменную. Собственно вопрос в том, как правильно реализовать передачу самого дескриптора в функцию, а не его значения, если такое в принципе возможно.

P.S. Извинияюсь, если вопрос "тупой" - начал курить .Net совсем недавно, а читать книги время не позволяет

Автор: Экскалупатор 9.4.2010, 07:54
может поможет, если я правильно понял что ты хочешь сделать:
http://msdn.microsoft.com/ru-ru/library/14akc2c7.aspx
http://msdn.microsoft.com/ru-ru/library/t3c3bfhx.aspx

Автор: Ozligia 9.4.2010, 08:28
Цитата(Экскалупатор @  9.4.2010,  07:54 Найти цитируемый пост)
может поможет, если я правильно понял что ты хочешь сделать:
ref
out 

Да, ты все правильно понял, вот только мне нужно для C++.NET
Насколько я понял, там для С#.NET

Автор: Partizan 9.4.2010, 09:12
ммм... ^% textReader 

как-то так, возможно

Автор: Ozligia 9.4.2010, 10:33
Цитата(Partizan @  9.4.2010,  09:12 Найти цитируемый пост)
ммм... ^% textReader 

как-то так, возможно 


А можно поподробнее?

Автор: Partizan 9.4.2010, 14:54
Код

int TestFunction()
{
System::String ^ sFileName = gcnew System::String("c:\testfile.test");
System::IO::TextReader ^ textReader();
OpenFileFunction(sFileName, textReader);
return 0;
}
int OpenFileFunction(System::String ^ sFileName, System::IO::TextReader ^% textReader)
{
textReader = gcnew System::IO::StreamReader(sFileName);
return 0;
}

Автор: Ozligia 9.4.2010, 15:38
Partizan, спасибо, выручил - всё работает. Плюсую, еще раз плюсую. Всё работает.
Я пытался, но не в том месте ставил %. Думал надо при вызове ставить.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)