Рейтинг:
19
Member 12561559
Я читал это (кстати, спасибо за ссылку), но на самом деле там ничего не говорится о подключении к базе данных. Будет ли он воссоздан (я думаю, что это так, если его BYVAL) или если он будет повторно использован (BYREF) - я спрашиваю только потому, что недавно перешел с VB6 на VB.NET и я все еще пытаюсь понять, как все работает, и просто хотел получить подтверждение того, правильно ли я это понял? Спасибо!
Dave Kreskowiak
Объект DbConnection - это ссылочный тип. Все экземпляры класса (объекты) являются ссылочными типами. Типы значений - это такие вещи, как целые числа и структуры.
Нет, ничто никогда не создается заново. Для ссылочных типов вы всегда передаете ссылку на объект. Разница в том, что если вы передаете ByVal, вы передаете копию ссылки (а не копию объекта). Если вы попытаетесь заменить переданный объект другим объектом,ничего не произойдет с вызывающим объектом. Когда ваш метод возвращается, вызывающий объект все еще будет иметь исходный объект, который он передал.
В ситуации ByRef вы передаете исходную ссылку на объект. В этом случае, если вызываемый метод заменит объект другим, вызывающий получит этот измененный объект обратно, по существу заменив тот, который он передал.
Member 12561559
Благодарность! Причина, по которой я спрашиваю, заключается в следующем: в vb6 я пишу DLL, развертываю ее на IIS6 (да, нам серьезно нужно обновить), и все работает нормально, конфликтов нет, т.е. все, что работает в DLL для пользователя, подключенного к сеансу, " их "DLL, все переменные принадлежат этому конкретному пользователю, но с тех пор, как я использую VB.NET, я получаю представление (из того, что я читаю, хотя я могу неправильно понимать), что если у меня есть DLL и объявлены некоторые общедоступные переменные, это даже несмотря на то, что существует несколько пользователей, этот один пользователь, который обратился к нашей DLL, может получать значения этой общедоступной переменной, которые получает другой пользователь в другом сеансе, но все еще обращается к DLL - имеет ли это смысл? Извините, если я запутался. В основном из-за многопоточности VB.NET все, что объявлено как Public, доступно для всех, кто обращается к этой переменной. Я собираюсь написать простой тест, чтобы убедиться, что это правда. Его ошеломляющий переход от VB к .NET, поскольку .NET DLLS поддерживает .COM (что мне и нужно делать).
Richard MacCutchan
Извините, я не знаю ответа. Когда вы говорите "общедоступные" переменные, где и как они становятся доступными? Библиотека DLL не должна содержать информацию, принадлежащую клиентскому приложению.
Member 12561559
Я думаю, что мне нужно сделать гораздо больше чтения, различия в том, как .NET обрабатывает библиотеки DLL, а VB обрабатывает библиотеки DLL очень по-разному, хотя настройка очень похожа. Кажется, у меня возникают проблемы с потоковой передачей подключений к базе данных, но один и тот же код в VB прекрасно работает без тех же проблем. Больше читая меня, я думаю - во всяком случае, большое вам спасибо, Ричард, - мне есть о чем почитать и подумать. Ваше время было оценено по достоинству :)