c# ToList疑惑,求高手解

來源:互聯網
上載者:User

1:問題描述

有三個類,Department,Method和Data

a.Department裡面有個Data的集合,如下:

 public class Department
    {
        public List<Data> BakDatas = new List<Data>();
    }

b.Method裡面也有個Data的集合,如下:

public class Method
    {
       public List<Data> Datas;
    }

c.Data類:

  public class Data
    {
        public double Temperature
        {
            get;
            set;
        }          
    }

d.Method與Department的關係:

            dept = new Department();
            method = new Method();
            method.Datas = dept.BakDatas;

這樣建立以後,原則上給dept.BakDatas值,method.Datas count個數應該和dept.BackDatas count個數一樣,可是下面測試(下面紅色字型)並不是這樣,不知為什麼,求高手解??

 

附代碼:

 /// <summary>
        /// 設定關聯,檢查:dept.BakDatas的變化將影響methodDP.Datas
        /// </summary>
        private void InitInstance()
        {
            dept = new Department();
            method = new Method();
            method.Datas = dept.BakDatas;
        }
      

 private List <Data > initBackDatas()
        {
            List <Data > BakDatas=new List<Data> ();  
         
            Data dt1 = new Data() {  Temperature = 21 };
            Data dt2 = new Data() {  Temperature = 22 };
            Data dt3 = new Data() {  Temperature = 23 };
            BakDatas.Add(dt1);
            BakDatas.Add(dt2);
            BakDatas.Add(dt3);
            return BakDatas ;
        }

 

       /// <summary>
        /// 測試錯誤why
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnTestAdd_Click(object sender, EventArgs e)
        {
            InitInstance();
            List<Data> BackDatas = initBackDatas();
            dept.BakDatas = BackDatas.ToList();

            //顯示:dept:3;Method:0
            string infoCheck= = "dept:"+dept.BakDatas.Count.ToString()
                + ";Method:" + method.Datas.Count.ToString ();
        }
        /// <summary>
        /// 測試正確
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnTestClear_Click(object sender, EventArgs e)
        {
            InitInstance();
            List<Data> BackDatas = initBackDatas();
           
            dept.BakDatas.Clear();
            dept.BakDatas.AddRange(BackDatas );

            //dept:3;Method:3
            string infoCheck= "dept:" + dept.BakDatas.Count.ToString()
              + ";Method:" + method.Datas.Count.ToString();
        }

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.