簡體   English   中英

獲取list.Count零在使用屬性中的.Add()方法添加元素后

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM