c# 进阶 List

using System;
using System.Collections.Generic;

namespace Lesson7_List
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("List");

            #region 知识点一 List的本质
            //List是一个c#为我们封装好的类,
            //它的本质是一个可变类型的泛型数组,
            //List类帮助我们实现了很多方法,
            //比如泛型数组的增删查改
            #endregion
            #region 知识点二 声明
            //需要引用命名空间
            //using System.Collections.Generic;
            List<int> listInt = new List<int>();
            List<string> listString = new List<string>();
            List<bool> listBool = new List<bool>();
            #endregion
            #region 知识点三 增删查改
            #region 增
            //将对象添加到 List<T> 的结尾处。
            //public void Add (T item);
            listInt.Add(1);
            listInt.Add(2);
            listInt.Add(3);
            listInt.Add(4);

            listString.Add("123");

            //将指定集合的元素添加到 List<T> 的末尾。
            //public void AddRange(System.Collections.Generic.IEnumerable<T> collection);
            List<string> listStr = new List<string>();
            listStr.Add("999");
            listString.AddRange(listStr);

            //将元素插入 List<T> 的指定索引处。
            //public void Insert(int index, T item);
            listInt.Insert(0, 100);
            Console.WriteLine(listInt[0]);
            #endregion
            #region 删
            //1.从 List<T> 中移除特定对象的第一个匹配项。
            //public bool Remove(T item);
            listInt.Remove(1);

            //2.移除 List<T> 的指定索引处的元素。
            //public void RemoveAt (int index);
            listInt.RemoveAt(0);

            //3.从 List<T> 中移除所有元素。
            //public void Clear ();
            listInt.Clear();

            listInt.Add(1);
            listInt.Add(2);
            listInt.Add(3);
            listInt.Add(4);
            #endregion
            #region 查
            //1.通过索引器查
            Console.WriteLine(listInt[0]);

            //2.确定某元素是否在 List<T> 中。
            //public bool Contains (T item);
            if (listInt.Contains(0))
            {
                Console.WriteLine("0 is exist");
            }
            else
            {
                Console.WriteLine("0 is no exist");
            }

            //3.正向查找
            //搜索指定的对象,并返回整个 List<T> 中第一个匹配项的从零开始的索引
            //public int IndexOf(T item);
            Console.WriteLine(listInt.IndexOf(10));

            //4.反向查找k
            //搜索指定对象并返回整个 List<T> 中最后一个匹配项的从零开始索引。
            //public int LastIndexOf(T item);
            Console.WriteLine(listInt.LastIndexOf(4));
            #endregion
            #region 改
            //通过索引器改
            listInt[0] = 100;
            Console.WriteLine(listInt[0]);
            #endregion
            #endregion
            #region 知识点四 遍历
            //长度
            Console.WriteLine(listInt.Count);
            //容量
            Console.WriteLine(listInt.Capacity);

            //通过长度遍历
            for (int i = 0; i < listInt.Count; ++i)
            {
                Console.WriteLine(listInt[i]);
            }

            //通过foreach遍历
            foreach(int item in listInt)
            {
                Console.WriteLine(item);
            }
            #endregion

        }
    }
}