<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Hopes

    Start Here..

     

    FeatureClass.Search(IQuery Filter,bool Recycling)參數說明

    FeatureClass.Search(IQuery Filter,bool Recycling)參數說明
    2011-07-19 8:32
    IFeatureClass的Search方法大家經常用到,很多人對Search方法的其中一個參數bool Recycling不是很理解。
    目前網上關于這個參數的意義的解釋有兩個版本:
    1.第一版本是Isnotnull大牛的:
    http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=13461
    他提出的觀點的是:參數Recycling為True的時候是傳引用,為False的時候為傳值
    2.第二個版本是Echo兄的:
    http://gis.cnblogs.com/home.aspx?page=3
    他提出的觀點是:參數Recycling為True的時候游標對象(Ifeaturecursor)是只包含一條記錄,為False的時候游標對象(Ifeaturecursor)為10條記錄(假設Featureclass有10條記錄)

    我經過測試提出個人的觀點:
    1.pFeatureCursor存儲的是所有符合條件的Feature對象的引用,
    2.Recycling的意思是回收,參數Recycling為True的時當執行這個方法IFeature pFeature=pFeatureCursor.NextFeature()上一條記錄的值在內存中所占的地址就會被銷毀回收,為False的時候當執行這個方法IFeature pFeature=pFeatureCursor.NextFeature()上一條記錄的值依然存在在內存中。
    Ok,接下來以實例證明本觀點:

    1.參數Recycling設置為True
               IFeatureClass pFeatureClass = (this.axMapControl1.get_Layer(0) as IFeatureLayer).FeatureClass;
                IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, true);
                //IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false);
                List<IFeature> pFeatures = new List<IFeature>();
                IFeature pFeature = pFeatureCursor.NextFeature();
                while (pFeature != null)
                {
                    pFeatures.Add(pFeature);
                    pFeature = pFeatureCursor.NextFeature();
                }
                
                for (int i = 0; i < pFeatures.Count; i++)
                {
                    MessageBox.Show(((pFeatures.Shape as IPolygon) as IArea).Area.ToString());
                }
    分析:pFeatures集合存儲了指向FeatureClass上所有Feature的引用,但是由于Recycling參數設置為TRUE也就是說沒執行一個NextFeautre方法上一條記錄的Feature值在內存中被回收,所以到最后遍歷pFeatures集合的時候所有的IFeature引用指向的Feature對象都為Null。所以會引發一下錯誤(如下圖所示):




    2.參數Recycling設置為False
               IFeatureClass pFeatureClass = (this.axMapControl1.get_Layer(0) as IFeatureLayer).FeatureClass;
               //IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, true);
                IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false);
                List<IFeature> pFeatures = new List<IFeature>();
                IFeature pFeature = pFeatureCursor.NextFeature();
                while (pFeature != null)
                {
                    pFeatures.Add(pFeature);
                    pFeature = pFeatureCursor.NextFeature();
                }
                
                for (int i = 0; i < pFeatures.Count; i++)
                {
                    MessageBox.Show(((pFeatures.Shape as IPolygon) as IArea).Area.ToString());
                }
    分析:pFeatures集合存儲了指向FeatureClass上所有Feature的引用,但是由于Recycling參數設置為False也就是說每執行一個NextFeautre方法上一條記錄的Feature值在內存中依然存在,所以到最后遍歷pFeatures集合的時候所有的 IFeature引用指向的Feature對象都依然存在。所以會執行的很Happy(如下圖所示):

     

    posted on 2012-04-05 19:52 ** 閱讀(1820) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    公告

    你好!

    常用鏈接

    留言簿(2)

    隨筆檔案

    文章分類

    文章檔案

    新聞檔案

    相冊

    收藏夾

    C#學習

    友情鏈接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 四虎亚洲国产成人久久精品| 亚洲VA中文字幕无码毛片| 成人国产网站v片免费观看| 亚洲精品V欧洲精品V日韩精品 | 亚洲中文字幕无码久久2017| 久久精品一本到99热免费| 亚洲AV无码一区二区三区网址| 国产亚洲综合成人91精品 | 亚洲欧洲日产国码高潮αv| 久久久久久夜精品精品免费啦| 亚洲日韩AV一区二区三区中文| 在线精品亚洲一区二区小说| 久久久久国产精品免费免费搜索| h片在线观看免费| 中文文字幕文字幕亚洲色| 亚洲国产综合无码一区| 日韩一级视频免费观看| 99免费视频观看| 国产免费人成视频尤勿视频| 亚洲va久久久久| 久久亚洲精品无码VA大香大香| 亚洲一区二区高清| 成人免费视频观看无遮挡| 久久精品电影免费动漫| 无码毛片一区二区三区视频免费播放 | 亚洲大尺度无码无码专区| 韩国二级毛片免费播放| 2019中文字幕在线电影免费 | 久久久久久国产a免费观看黄色大片| 一级**爱片免费视频| 亚洲精品国产综合久久久久紧| 亚洲综合色丁香麻豆| 国产成A人亚洲精V品无码性色| 亚洲精品WWW久久久久久| 免费精品一区二区三区在线观看 | 国产在线ts人妖免费视频| 午夜国产精品免费观看| 一级毛片aaaaaa免费看| a毛片全部播放免费视频完整18| 国产亚洲成在线播放va| 亚洲成av人片在www鸭子|