<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      迭代模式

      不就是迭代模式嗎,就是第一個,上一個,下一個,最后一個,當前元素嗎?
      用得著搞幾個接口弄出五六個類出來嗎?
      而且元素還是Object類型,裝箱,拆箱的,真要命,用泛型吧
      有時候在想,設計模式是用來欣賞的、用來學習的,真正在用的時候根本用不上,那么多接口和類,調來調去的
      不好資源的嗎?真正在用的時候應該是精簡版的設計模式,你也可以說他不是設計模式,畢竟嘴是你的。
      如果你的方法參數為基礎類型,沒有用out或ref,C#就會為你產生一個變量,因為基礎類型是值拷貝
      當然基礎類型分配在棧中,分配速度較快,而且能很快回收,棧的容量是有限的嗎,能不很快回收嗎。
      棧是先進后出,比如一個方法中的基礎類型變量,先定義的先進棧,卻后釋放,什么叫壓棧,就是這個道理啦。
      引用類型參數一般不會產生多余的變量,引用類型就是引用對象的地址,直接對對象的地址內容進行操作
      引用類型分配在托管堆中,在其中分配資源的速度相對棧較慢,因為需要尋找空閑內存,搜集整理內存碎片,都是要時間的。
      托管堆中的資源什么時候被GC回收是不知道的,當然不會很久,這種事情是不能拖的,他可跟控件不同,你想脫就脫啊。

      namespace ClassTest
      {
          /// <summary>
          /// 迭代模式
          /// </summary>
         public class Iterator<T>
          {
             private ConcreteList<T> concreteList;
             //索引值
             int index;
             public Iterator(ConcreteList<T> concreteList)
             {
                 index = 0;
                 this.concreteList = concreteList;
             }
      
             
             /// <summary>
             /// 第一個元素
             /// </summary>
             public void First()
             {
                 index = 0;
             }
      
             
             /// <summary>
             /// 最后一個元素
             /// </summary>
             public void Last()
             {
                 index = concreteList.Count - 1;
             }
      
              
             /// <summary>
             /// 當前元素
             /// </summary>
             /// <returns></returns>
             public T CurrentItem()
             {
                 return concreteList.GetCurrent(index);
             }
      
              
             /// <summary>
             /// 下一個元素
             /// </summary>
             /// <returns></returns>
             public bool Next()
             {
                 if (++index >= concreteList.Count) //如果當前元素已經最后一個元素,返回false
                 {
                     return false;
                 }
                 return true;
             }
      
            
             /// <summary>
             /// 上一個元素
             /// </summary>
             private void Previous()
             {
                 if (index > 0)
                 {
                     index--;
                 }
             }
      
          }
      }
      
      using System;
      using System.Collections.Generic;
      
      namespace ClassTest
      {
         /// <summary>
         /// 實體集合
         /// 對元素進行添加、刪除和顯示
         /// </summary>
         /// <typeparam name="T"></typeparam>
         public class ConcreteList<T>
          {
             private IList<T> list;
      
             public ConcreteList()
             {
                 list = new List<T>();
             }
      
       
             /// <summary>
             /// 添加元素
             /// </summary>
             /// <param name="t"></param>
             public void Add(T t)
             {
                 list.Add(t);
             }
      
       
             /// <summary>
             /// 刪除指定元素
             /// </summary>
             /// <param name="t"></param>
             public void Remove(T t)
             {
                 list.Remove(t); 
             }
      
       
             /// <summary>
             /// 根據索引刪除元素
             /// </summary>
             /// <param name="index"></param>
             public void RemoveAt(int index)
             {
                 if (Count <= index)     //索引超出范圍
                 {
                     throw new ArgumentOutOfRangeException("index");
                 }
                 list.RemoveAt(index);
             }
      
       
             /// <summary>
             /// 元素個數
             /// </summary>
             public int Count
             {
                 get {
                     return list.Count;
                 }
             }
      
       
             /// <summary>
             /// 獲取當前元素
             /// </summary>
             /// <param name="index"></param>
             /// <returns></returns>
             public T GetCurrent(int index)
             {
                 if (Count == 0)       //處理集合為空的情況
                 {
                     return default(T);
                 }
                 if (Count<=index)     //索引超出范圍
                 {
                     throw new ArgumentOutOfRangeException("index");
                 }
                 return list[index];
             }
      
             
          }
      }

       

      posted @ 2011-04-08 11:17  古文觀芷  閱讀(843)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品中文字幕日韩| h无码精品3d动漫在线观看| 久久精品av国产一区二区 | 97成人碰碰久久人人超级碰oo| 一本一本久久a久久综合精品| 97亚洲熟妇自偷自拍另类图片| 亚洲成av人片乱码色午夜| 国产精品乱码人妻一区二区三区 | 亚洲天堂av在线一区| 国内精品视频区在线2021| 日本一区不卡高清更新二区| 日韩高清福利视频在线观看| 国产不卡av一区二区| 国产毛片欧美毛片久久久| 欧美精品久久天天躁| 久久蜜臀av一区三区| 国产玖玖视频| 欧美丰满熟妇性xxxx| 和艳妇在厨房好爽在线观看| 国产成人欧美综合在线影院| 成人看的污污超级黄网站免费 | 国产JJIZZ女人多水喷水| 亚洲成人av综合一区| 国产无套白浆一区二区| 免费视频爱爱太爽了| 美女爽到高潮嗷嗷嗷叫免费网站| 无码国内精品久久人妻蜜桃| 女子spa高潮呻吟抽搐| 中文字幕成人精品久久不卡| 乱色熟女综合一区二区三区| 无码精品人妻一区二区三区中| 亚洲国产成人综合精品| 桦南县| 欧美性猛交xxxx乱大交极品| 疯狂做受XXXX高潮国产| 平阳县| 熟女人妻视频| 99九九视频高清在线| 日韩深夜免费在线观看| 成人亚洲国产精品一区不卡| 精品成在人线av无码免费看|