C# 在属性中使用.Add()方法添加元素后获取list.Count零
下面是我的代码C# 在属性中使用.Add()方法添加元素后获取list.Count零,c#,list,session,properties,C#,List,Session,Properties,下面是我的代码 private List<string> _myList public List<string> myList { get { if (Session["MyData"] != null) _myList = Session["MyData"] as List<string>; if(_myList==null) _myList = new
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.Count
我得到
myList.Count等于0
我不知道我的代码有什么问题。这会覆盖列表:
get
{
if (Session["MyData"] != null)
_myList = Session["MyData"] as List<string>; //<-- here
if(_myList==null)
_myList = new List<string>();
return _myList;
}
get
{
if(会话[“MyData”]!=null)
_myList=Session[“MyData”]as List;//您没有修改\u myList
。在get
中,有时您会返回一个新的列表
,因此您会将新项添加到该新的列表
中,当再次调用它时,您会为另一个新的列表
计算成员数。属性getter不会设置会话[“MyData”]=new List();
正确
将代码更改为:
public List<string> myList
{
get
{
return Session["MyData"] ?? (Session["MyData"] == new List<string>());
}
set
{
Session["MyData"] = value;
}
}
公共列表myList
{
得到
{
返回会话[“MyData”]??(会话[“MyData”]==新列表());
}
设置
{
会话[“MyData”]=值;
}
}
获取
{
如果(_myList!=null)
{
会话[“MyData”]=\u myList;//更改
返回我的列表;
}
if(会话[“MyData”]!=null)
_myList=会话[“MyData”]作为列表;
其他的
_myList=新列表();
返回我的列表;
}
设置
{
_myList=value;//更改
会话[“MyData”]=值;
}
谢谢你的回答,这对我很有帮助。我对它做了一些修改,效果很好。
get
{
if(_myList != null)
return _mylist;
if (Session["MyData"] != null)
_myList = Session["MyData"] as List<string>;
else
_myList = new List<string>();
return _myList;
}
public List<string> myList
{
get
{
return Session["MyData"] ?? (Session["MyData"] == new List<string>());
}
set
{
Session["MyData"] = value;
}
}
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;
}