будет ли объявление переменной перезаписывать объявление функции?
blockquote>Нет. Перед выполнением любого кода среда выполнения находит все объявления функций и переменных и инициализирует с ними новую область видимости. Вещи немного отличаются между оценкой кода скрипта и оценкой области действия функции, но результат один и тот же:
- Дублирующиеся объявления игнорируются.
- Объявление функции оценивается в конце и присваивается их соответствующему имени.
В глобальной области видимости, поскольку
foo
является как именем функции, так и объявлением переменной, объявление переменной игнорируется. А так как у него нет инициализатора, значениеfoo
не изменяется, когда эта строка фактически вычисляется.Подробности можно найти в спецификации языка .
Вопрос 2: я набрал тот же код в онлайн-редакторе https://jsbin.com/dezixozewi/edit?js,console , он выдает ошибку как «идентификатор» 'foo' уже объявлен '. поэтому он вообще не допускает дублирования деклараций.
blockquote>Непонятно, как jsbin оценивает код, но он действителен.
Если IDisposable
шаблон реализован правильно, затем да (т.е. деструктор класса будет заботиться о расположении объекта). Я не полагаю, что менеджер сеансов ASP.NET делает любые гарантии о явном вызове Dispose()
на реализации классов IDisposable
.
Обратите внимание, что несмотря на агрессивные возражения Mark's, я не предлагаю "обычно" добавить финализаторы. Я просто предполагаю это, если Вы хотите Dispose
метод на Вашем объекте звонил, когда сессия истекает, это - жизнеспособный вариант.
Я не согласился бы с ответом Sean; во-первых, финализаторы не должны обычно добавляться к классам, даже если они IDisposable
- финализаторы должны только действительно использоваться в классах, которые представляют неуправляемые ресурсы. С другой стороны класс с финализатором часто также IDisposable
.
Ре вопрос: Dispose()
названный - нет, это не. Объект будет собран "мусор" в какой-то момент в (неопределенном) будущем, но это об этом. Финализатор не добавил бы много здесь, поскольку любые инкапсулированные объекты будут также уже иметь право на набор (предполагающий, что на них не ссылаются в другом месте).
Я был бы заинтересован, чтобы иметь Доступные объекты на Сессии. Это почти наверняка создаст проблему масштабируемости для Вас. Что-либо, что Доступно, вероятно, подключено к некоторому ограниченному ресурсу, если у Вас будет много активных сессий, то Вы, вероятно, израсходуете тот ресурс. Во-вторых, я ожидал бы что многие (большинство?) доступные объекты не будут работать хорошо в веб-ферме как ресурс, с которым они связываются, вероятно, локально для единственной машины, и они не сериализируют и затем десериализуют на другой машине в том же состоянии.