Подтвердить что ты не робот

Какая разница между Session.Add( "ключ", значение) и сеансом [ "ключ" ] = значение?

Может кто-нибудь, пожалуйста, объясните мне разницу между:

Session.Add("name",txtName.text); и Session["name"] = txtName.text;

Это был вопрос интервью, и я ответил, что оба хранят данные в формате key = "Value", например Dictionary class в С#.

Я прав, или есть какая-то разница?

4b9b3361

Ответ 1

Взгляд на код для HttpSessionState показывает нам, что они на самом деле одинаковы.

public sealed class HttpSessionState : ICollection, IEnumerable
{
    private IHttpSessionState _container;
...
    public void Add(string name, object value)
    {
        this._container[name] = value;
    }

    public object this[string name]
    {
        get
        {
            return this._container[name];
        }
        set
        {
            this._container[name] = value;
        }
    }
...
}

Как для них оба

Сохранение данных в формате key = "Value" типа Dictionary в С#.

Фактически они сохраняют результат в объекте IHttpSessionState.

Ответ 2

Два фрагмента кода, которые вы опубликовали, являются одними и теми же функциями. Оба обновляют (или создают, если они не существуют) определенный объект сеанса, определенный ключом.

Session.Add("name",txtName.text);

совпадает с:

Session["name"] = txtName.text;

Первый основан на методе, где второй является строковым индексом. Оба перезаписывают предыдущее значение, удерживаемое клавишей.