27

有人可以向我解释一下:

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

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

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

4

2 回答 2

27

查看代码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;
        }
    }
...
}

至于他们俩

以 C# 中的类key = "Value"等格式存储数据。Dictionary

他们实际上将结果存储在一个IHttpSessionState对象中。

于 2012-04-04T20:04:19.827 回答
13

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

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

是相同的:

Session["name"] = txtName.text;

第一个是method-based,第二个是 string 的地方indexer-based

两者都覆盖键保存的先前值。

于 2012-04-04T19:43:29.293 回答