Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/14: Рейтинг темы: голосов - 14, средняя оценка - 4.64
24 / 24 / 4
Регистрация: 22.01.2011
Сообщений: 77
.NET 4.x

Передача по ссылке

22.01.2011, 20:06. Показов 2995. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые участники форума Прошу вашей помощи.

В теле некоего метода я объявляю объект и передаю его по ссылке в другой метод.

C#
1
2
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(_URI);
            SetProperties(ref req);
Далее, метод SetProperties проставляет свойства моего объекта. Вот так:

C#
1
2
3
4
5
6
7
8
9
private void SetProperties(ref HttpWebRequest wr)
        {
            wr.Timeout = timeout;
            if (useProxy) wr.Proxy = new WebProxy(proxy);
            wr.UserAgent = uag;
            wr.Referer = refer;
            wr.Headers = webHeaders;
            wr.CookieContainer = cookie;
        }
По идее (по моей идее, возможно неверной) после ретурна из метода я должен получить мой объект с прописанными свойствами. Чего я не получаю. На выходе имеется объект в том же состоянии, как и был до вызова SetProperties. В чем моя ошибка?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.01.2011, 20:06
Ответы с готовыми решениями:

Передача объектов методам по ссылке
Здравствуйте! Читаю Шилдта C# и дошел до главы Передача объектов методам по ссылке. Прошу объяснить по-проще, что, откуда и зачем. ...

Передача в метод по ссылке и по значению
Запутался малость... class Program { static void Main(string args) { List<string>...

Передача элемента массива по ссылке
В метод swap пытаюсь передать 2 элемента массива по ссылке, но компилятор пишет, что индексатор не может передаваться как ссылка. Как можно...

7
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
22.01.2011, 21:05
Цитата Сообщение от skavans Посмотреть сообщение
В чем моя ошибка?
С виду все правильно. Покажи целиком метод, в котором ты используешь вызов метода SetProperties
0
24 / 24 / 4
Регистрация: 22.01.2011
Сообщений: 77
23.01.2011, 00:32  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public string Get(string _URI)
        {
            string result = string.Empty;
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(_URI);
            SetProperties(ref req);
 
            try
            {
                HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
                cookie.Add(resp.Cookies);
 
                respCode = (int)resp.StatusCode;
                respDescr = resp.StatusDescription;
 
                Stream stream = resp.GetResponseStream();
                StreamReader sr = new StreamReader(stream, encoding);
                result = sr.ReadToEnd();
                stream.Close();
 
            }
            catch (WebException e)
            {
                if (e.Response != null)
                {
                    respCode = (int)((HttpWebResponse)e.Response).StatusCode;
                    respDescr = ((HttpWebResponse)e.Response).StatusDescription;
                }
                else
                {
                    respCode = 0;
                    respDescr = "Прокси-сервер не отвечает";
                }
 
            }
            catch (IOException)
            {
                respCode = 0;
                respDescr = "Удаленный сервер принудительно разорвал соединение";
            }
 
            return result;
        }
вот такой метод. я не вижу ошибок
0
21 / 21 / 3
Регистрация: 11.07.2010
Сообщений: 63
23.01.2011, 01:25
Да, с виду все правильно. Правда, можете передавать и без ref, все равно объект передастся по ссылке.

А Вы в дебаге проходились? Смотрели что происходит?
0
24 / 24 / 4
Регистрация: 22.01.2011
Сообщений: 77
23.01.2011, 01:32  [ТС]
конечно проходил) внутри метода setproperties все отлично, реферер и юзерагент меняются, после выхода из него остаются пустыми, а точнее даже null-ами.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
23.01.2011, 10:13
Цитата Сообщение от skavans Посмотреть сообщение
после выхода из него остаются пустыми, а точнее даже null-ами.
Похоже на глюк студии. Проверь работает ли у тебя это
C#
1
2
3
4
void MEth(ref string str)
        {
            str = "hi";
        }
А лучше сделай свой метод с обычным return
0
24 / 24 / 4
Регистрация: 22.01.2011
Сообщений: 77
23.01.2011, 16:12  [ТС]
мужики, всем спасибо, разобрался все из-за моей глупости...

C#
1
2
3
4
5
6
7
8
9
private void SetProperties(ref HttpWebRequest wr)
        {
            wr.Timeout = timeout;
            if (useProxy) wr.Proxy = new WebProxy(proxy);
            wr.UserAgent = uag;
            wr.Referer = refer;
            wr.Headers = webHeaders;
            wr.CookieContainer = cookie;
        }
вот тут у меня приедпоследней строкой идет замена заголовков. юзер-агент входит в эти заголовки, то есть он тупо затирался коллекцией WebHeaders. для исправления этой неудачи поставил эту строку на первое место, теперь все в норме спасибо)
0
 Аватар для exe-dealer
308 / 161 / 11
Регистрация: 07.06.2009
Сообщений: 538
23.01.2011, 16:18
и ref убери он тут совершенно ни к чему
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.01.2011, 16:18
Помогаю со студенческими работами здесь

С - > C# Передача значений по ссылке и значению
Есть Си функция: double lagrange(double X, double *Xi, double *Yi, int n) //Аппроксимация многочленом Лагранжа. { int i, k; ...

Передача параметров по ссылке в класс
Помогите пожалуйста проблемой: нужно передать в класс некой формы по ссылке имя сервера и базы данных, чтоб после закрытия этой модальной...

Передача ссылки по ссылке (ref)
Вопрос тут такого себе индивидуального характера. Встретился с этим впервые. Подскажите, почему метод Named, работает только тогда...

Передача объектов методам по ссылке
Здравствуйте. не могу разобраться с этим примером из книги Шилдта.using System; class MyClass { int alpha, beta; public...

Передача массива по ссылке вызывает ошибку
Здравствуйте. Столкнулся с проблемой передачи массивов по ссылке... В самоучителе который изучаю дан пример только с обычными параметрами,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru