Сессия, содержащая объекты, реализовывая IDisposable

будет ли объявление переменной перезаписывать объявление функции?

blockquote>

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

  • Дублирующиеся объявления игнорируются.
  • Объявление функции оценивается в конце и присваивается их соответствующему имени.

В глобальной области видимости, поскольку foo является как именем функции, так и объявлением переменной, объявление переменной игнорируется. А так как у него нет инициализатора, значение foo не изменяется, когда эта строка фактически вычисляется.

Подробности можно найти в спецификации языка .


Вопрос 2: я набрал тот же код в онлайн-редакторе https://jsbin.com/dezixozewi/edit?js,console , он выдает ошибку как «идентификатор» 'foo' уже объявлен '. поэтому он вообще не допускает дублирования деклараций.

blockquote>

Непонятно, как jsbin оценивает код, но он действителен.

7
задан Chris Marisic 31 January 2009 в 02:41
поделиться

3 ответа

Если IDisposable шаблон реализован правильно, затем да (т.е. деструктор класса будет заботиться о расположении объекта). Я не полагаю, что менеджер сеансов ASP.NET делает любые гарантии о явном вызове Dispose() на реализации классов IDisposable.

Обратите внимание, что несмотря на агрессивные возражения Mark's, я не предлагаю "обычно" добавить финализаторы. Я просто предполагаю это, если Вы хотите Dispose метод на Вашем объекте звонил, когда сессия истекает, это - жизнеспособный вариант.

3
ответ дан 6 December 2019 в 15:32
поделиться

Я не согласился бы с ответом Sean; во-первых, финализаторы не должны обычно добавляться к классам, даже если они IDisposable - финализаторы должны только действительно использоваться в классах, которые представляют неуправляемые ресурсы. С другой стороны класс с финализатором часто также IDisposable.

Ре вопрос: Dispose() названный - нет, это не. Объект будет собран "мусор" в какой-то момент в (неопределенном) будущем, но это об этом. Финализатор не добавил бы много здесь, поскольку любые инкапсулированные объекты будут также уже иметь право на набор (предполагающий, что на них не ссылаются в другом месте).

10
ответ дан 6 December 2019 в 15:32
поделиться

Я был бы заинтересован, чтобы иметь Доступные объекты на Сессии. Это почти наверняка создаст проблему масштабируемости для Вас. Что-либо, что Доступно, вероятно, подключено к некоторому ограниченному ресурсу, если у Вас будет много активных сессий, то Вы, вероятно, израсходуете тот ресурс. Во-вторых, я ожидал бы что многие (большинство?) доступные объекты не будут работать хорошо в веб-ферме как ресурс, с которым они связываются, вероятно, локально для единственной машины, и они не сериализируют и затем десериализуют на другой машине в том же состоянии.

1
ответ дан 6 December 2019 в 15:32
поделиться
Другие вопросы по тегам:

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