C#中List.Clear()方法和實例化new List()操作的結果分析

    本文主要的目的是想簡單的探討一下C#中List針對內存的操作過程,以便以后遇到該種情況可以避免走進誤區,內容非常簡單,只是在此作為記錄。能幫到人最好,幫不到就當給自己提個醒。C#將復雜的指針操作全都隱藏到后台去處理,以至於是我們很到看到C#的本質。

C#中list<T> list=new List<T>();中new的過程是建立一塊內存空間,是新建一個沒有元素的空列表對象。

C#中list.Clear()是把new之后的那塊內存空間的內容清空,並不是刪除這塊內存空間,是清除原先列表對象的元素,還是那個對象,元素沒了。

下面就說一下在哪種情況下會因為誤用clear導致程序出現異常bug。

 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text;

namespace listAndnew 
{ 
    public class objectmouse 
    { 
        public string Name { get; set; } 
        public bool Sex { get; set; } 
        public int Age { get; set; } 
    } 
    class Program 
    { 
        static List<objectmouse> list = new List<objectmouse>(); 
        static List<List<objectmouse>> list1 = new List<List<objectmouse>>(); 
        static Random seed = new Random();

        static void Main(string[] args) 
        { 
            int a = 0; 
            while (a < 2) 
            { 
                int flag = 0; 
                objectmouse mouse = new objectmouse(); 
             list.Clear();///////////使用clear()方法輸出圖1 //list = new List<objectmouse>();/////////////使用new輸出圖2 
                while (flag < 2) 
                { 
                    mouse.Name = "小白鼠"; 
                    mouse.Age = seed.Next(20); 
                    mouse.Sex = true; 
                    list.Add(mouse); 
                    flag++; 
                }

                list1.Add(list); 
                a++; 
            } 
            for (int i = 0; i < list1.Count; i++) 
            { 
                for (int j = 0; j < list.Count; j++) 
                { 
                    Console.WriteLine("Name" + list1[i][j].Name + "Sex:" + list1[i][j].Sex + "Age:" + list1[i][j].Age);

                } 
                Console.WriteLine("----------------華麗的分割線-------------------"); 
            }

            Console.ReadKey();

        } 
    } 
}

 
              image 
              image 
              

                     圖1                                        圖2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。