<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#學習

    友情鏈接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产成人亚洲综合a∨| 亚洲国产最大av| 一级黄色免费毛片| 国产又大又粗又硬又长免费 | 国产拍拍拍无码视频免费| 国产亚洲AV夜间福利香蕉149 | 久久久久亚洲av成人无码电影| 日本系列1页亚洲系列| 四虎免费久久影院| 免费人成又黄又爽的视频在线电影| 国产免费一区二区三区VR| 免费播放美女一级毛片| 亚洲一区二区三区免费| 丝袜足液精子免费视频| 亚洲国产成人久久精品动漫 | 国产偷国产偷亚洲清高APP| 免费中文字幕在线观看| 国产免费黄色无码视频| 久久久综合亚洲色一区二区三区| 最近新韩国日本免费观看| 亚洲伊人久久大香线蕉影院| 日韩免费视频网站| 国产成人高清精品免费观看| 亚洲电影免费在线观看| 中文字幕无码免费久久99| 另类小说亚洲色图| 国产亚洲成av片在线观看| 91在线老王精品免费播放| 亚洲中文字幕乱码熟女在线| mm1313亚洲精品无码又大又粗| 国产日韩精品无码区免费专区国产 | 成人五级毛片免费播放| 爱情岛论坛免费视频| 亚洲国产精品乱码一区二区| 在线精品一卡乱码免费| 美女黄频免费网站| 亚洲人成在线影院| 四虎永久成人免费| 99久久免费中文字幕精品| 精品亚洲国产成人av| 亚洲国产精品va在线播放 |