[英]getting list.Count zero after adding element using .Add() method in property
以下是我的代碼
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
我不知道我的代碼有什么問題。
這會覆蓋列表:
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;
}
您沒有修改_myList
。 在你的get
,有時你會返回一個新的List<string>
所以你將新項添加到那個新List
,當再次調用它時,你會計算另一個新List<string>
的成員。
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;
}
屬性getter不設置Session["MyData"] = new List<string>();
正確。
將您的代碼更改為:
public List<string> myList
{
get
{
return Session["MyData"] ?? (Session["MyData"] == new List<string>());
}
set
{
Session["MyData"] = value;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.