Vairāk

Efektīvi atbrīvojiet IF objekta objektu


Man ir šāds kods:

// qf ir vaicājumu filtrs var fCursor = FC.Search (qf, true); var feat = fCursor.NextFeature (); int selCount = FC.FeatureCount (qf); var userId = jauns int [selCount]; ja (selCount! = 0) {for (int i = 0; i 

Vai ir kāda atšķirība, ja mēs izlaižam IFeature (feat) ārpus cilpas?


Aizmirstiet par atbrīvošanuIFeaturecilpas iekšpusē. To darot, jūs varat atrast tikai veiktspējas problēmas. Tāpēc es neieteiktu izlaistIFeatureobjekts cilpas iekšpusē. Kā saka Maikls, objekti tiek pārrakstīti, kad tiek saukta nākamā funkcija. Arī anIFeatureobjekts nav jāatbrīvo (skat. ESRI dokumentāciju par realizēšanu ArcObjects).

Es, ievērojot ESRI ieteikumus, atbrīvoju objektus, kas ievieš ICursors, IEnums un ISets, kad esmu beidzis tos izmantot. Jūs varat arī brīvi izlaistIRowvaiIFeatureobjekts, bet IMHO to neuzskata par nepieciešamu.

BTW: Punkts par pārstrādi un bez pārstrādes kursoriem ArcObjects (vairāk informācijas šeit):

No meklēšanas metodes tika atgriezti kursi, kas nav pārstrādājami OBLIGĀTI var izmantot, kopējot līdzekļus no kursora uz citas klases ievietošanas kursoru. Tas ir tāpēc, ka otrreizējās pārstrādes kursors atkārtoti izmanto to pašu ģeometriju, un dažos gadījumos visiem ieliktņa kursorā ievietotajiem elementiem var būt vienāda ģeometrija. Izmantojot kursoru, kas nav pārstrādājams, tiek nodrošināts, ka katra ģeometrija ir unikāla.


Skatīties video: Inventor iFeature Basic iFeature for the Furniture Industry (Oktobris 2021).