Session.Add(“key”,value)和Session [“key”] = value之间有什么区别?

时间:2012-04-04 19:29:09

标签: c# asp.net session

有人可以向我解释一下之间的区别:

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

这是一个面试问题,我回答说,它们都以key = "Value"格式存储数据,如C#中的Dictionary类。

我是对的,还是有什么不同?

2 个答案:

答案 0 :(得分:26)

查看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"格式存储数据,例如C#中的Dictionary类。

它们实际上将结果存储在IHttpSessionState对象中。

答案 1 :(得分:12)

您发布的两个代码段在功能上是一样的。两者都更新(或创建,如果它不存在)由键定义的某个Session对象。

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

与:

相同

Session["name"] = txtName.text;

第一个是method-based,,其中第二个是字符串indexer-based

两者都会覆盖密钥持有的先前值。