以下是我的代码
private List<string> _myList
public List<string> myList
{
get
{
if (Session["MyData"] != null)
_myList = Session["MyData"] as List<string>;
if(_myList==null)
_myList = new List<string>();
return _myList;
}
set
{
Session["MyData"] = value;
}
}
现在我打电话
myList.add(new string("string1"));
并使用
myList.Count
我收到myList.Count equals 0
我不知道我的代码有什么问题。
答案 0 :(得分:2)
这会覆盖列表:
get
{
if (Session["MyData"] != null)
_myList = Session["MyData"] as List<string>; //<-- here
if(_myList==null)
_myList = new List<string>();
return _myList;
}
尝试将其更改为:
get
{
if(_myList != null)
return _mylist;
if (Session["MyData"] != null)
_myList = Session["MyData"] as List<string>;
else
_myList = new List<string>();
return _myList;
}
答案 1 :(得分:1)
您没有修改_myList
。在get
中,有时您会返回一个新的List<string>
,因此您将新项目添加到新的List
,再次调用时,您会计算另一个新List<string>
的成员。
答案 2 :(得分:1)
get
{
if(_myList != null)
{
Session["MyData"] = _myList; // change
return _myList;
}
if (Session["MyData"] != null)
_myList = Session["MyData"] as List<string>;
else
_myList = new List<string>();
return _myList;
}
set
{
_myList = value; //change
Session["MyData"] = value;
}
答案 3 :(得分:0)
属性getter未正确设置Session["MyData"] = new List<string>();
。
将您的代码更改为:
public List<string> myList
{
get
{
return Session["MyData"] ?? (Session["MyData"] == new List<string>());
}
set
{
Session["MyData"] = value;
}
}