国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#中泛型容器Stack<T>的用法,以及借此實現”撤銷/重做”功能

2019-11-17 02:22:04
字體:
來源:轉載
供稿:網友

C#中泛型容器Stack<T>的用法,以及借此實現”撤銷/重做”功能

.Net為我們提供了眾多的泛型集合。比如,Stack<T>先進后出,Queue<T>先進先出,List<T>集合元素可排序,支持索引,LinkedList<T>,雙向鏈表的泛型實現,不支持索引;ISet<T>不允許被復制,他有2個實現,一個是HashSet<T>,不維持集合元素的排序,另一個是SortedSet<T>,支持集合元素的排序;IDictionary<TKey, TValue>是一個字典集合的泛型接口,SortedList<TKey,TValue>實現了IDictionary<TKey, TValue>,但同時也是集合,維持集合元素的排序,支持按鍵或按值索引。

本篇體驗Stack<T>的用法。

基本用法

Stack<T>是Stack的泛型實現,提供了若干方法和屬性,比如入棧、出棧、查看棧頂元素,查看棧內集合元素數量,等等。棧的最大特點是先進后出,可以把棧想像成一堆疊起來的盤子,入棧就是把一個個盤子放到最上面,出棧就是從最上面把盤子拿掉。用法比較簡單:

    class PRogram
    {
        static void Main(string[] args)
        {
            var customer1 = new Customer() {ID = 1, Name = "張三", Gender = "男"};
            var customer2 = new Customer() { ID = 2, Name = "李四", Gender = "男" };
            Stack<Customer> stackCustomers = new Stack<Customer>();
            //入棧
            stackCustomers.Push(customer1);
            stackCustomers.Push(customer2);
            //查看棧頂元素
            Customer topCustomer = stackCustomers.Peek();
            Console.WriteLine("棧頂元素是:" + topCustomer.Name);
            //遍歷所有棧內元素
            foreach (var customer in stackCustomers)
            {
                Console.WriteLine("id is {0},name is {1}", customer.ID, customer.Name);
            }
            //出棧
            Customer outCustomer = stackCustomers.Pop();
            Console.WriteLine("正在出棧的是:" + outCustomer.Name);
            Console.WriteLine("當前棧內元素數量為:" + stackCustomers.Count);
            Console.ReadKey();
        }
    }
    public class Customer
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public string Gender { get; set; }
    }

臨摹一個泛型Stack<T>

泛型Stack類內部維護這一個泛型數組和索引指針,且指針的初始位置是-1。

入棧就是把指針往前提一位,并把入棧元素賦值給該棧內位置。另外,入棧要考慮是否達到容量上限,如果達到就要給數組擴容。

出棧就是讓當前棧位置的元素值為入棧類型的默認值,并大指針后退一位。

獲取棧頂元素就是獲取棧當前索引位置對應的元素。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江北区| 云和县| 马龙县| 金塔县| 尉氏县| 西贡区| 姜堰市| 道孚县| 潢川县| 秦皇岛市| 聂荣县| 新丰县| 宾川县| 嘉义市| 永寿县| 罗山县| 锡林郭勒盟| 株洲县| 白山市| 大同市| 鄂州市| 武强县| 连平县| 桃园县| 泰顺县| 涪陵区| 台湾省| 塘沽区| 太湖县| 定南县| 青阳县| 阳原县| 页游| 澄城县| 红安县| 建平县| 河北省| 永清县| 海城市| 博兴县| 浦县|