Daha çox

Xüsusiyyət mağazası NullReferenceException səhvini alır

Xüsusiyyət mağazası NullReferenceException səhvini alır


Bir sahə dəyərini seçilmiş OBJECTID-ə uyğun olaraq yeniləməyə çalışıram. Ancaq System.NullReferenceException səhvini alın. Kodda nəyin səhv olduğunu bilmirəm.

Kodum belədir:

pActiveView = pMxDoc.FocusMap pMxDoc = My.ArcMap.Application.Document pMap = pMxDoc.FocusMap Dim layerNum = GetIndexNumberFromLayerName (pActiveView, "dev_db.DBO.Segment") Dim pFLayR Lay pFLayer As .ArcGIS.Geodatabase.IFeatureClass = pFLayer.FeatureClass Dim xüsusiyyət IFeature = pFLayer.GetFeature (1) Dim nameFieldIndex As Integer = pFLayer.FindField ("Seg_ID") feature.Value (nameFieldIndex) = "12/ore )

Metod bir tənzimləmə sessiyasında çağırılır və təsdiqlənən qatdakı OBJECTID 1 olduğunu təsdiqləyin.

Arcobjects 10.2.2 və vb.net arcmap eklentisini istifadə edirəm.


GetFeature (), IFeatureLayer deyil, IFeatureClass metodudur.

Bunu dəyişdirin:

IFeature = pFLayer.GetFeature olaraq zəif xüsusiyyət (1)

buna:

IFeature = pFLayer.FeatureClass.GetFeature (1) olaraq zəif xüsusiyyət

Deyəsən bir featureclass obyekti yaradırsan, amma istifadə etmirsən.


Xüsusiyyət siniflərindən xüsusiyyətlər, xüsusiyyət siniflərindən xüsusiyyət təbəqələrindən və s. Aldığınız zaman hər zaman sıfır dəyərləri yoxlamağınızı tövsiyə edirəm ki, bu tip səhvlərin qarşısını alacaq və gələcəkdə səhv tapmaq daha asan olacaq.

Dim pFLayer As IFeatureLayer pFLayer = pMap.Layer (layerNum) Dim featureClass As ESRI.ArcGIS.Geodatabase.IFeatureClass = pFLayer.FeatureClass If featureClass = DbNull.value then Ret End End If IF xüsusiyyət IFeature = featureCature DbNull.value sonra Return End Əgər Dim nameFieldIndex As Integer = pFLayer.FindField ("Seg_ID") If nameFieldIndex = -1 If Return End If feature.Value (nameFieldIndex) = "12/11" feature.Store ()

Bu kodla xüsusiyyətin boş olduğunu tanıdınız və xüsusiyyət qatından "GetFeature ()" metodunun səhv olduğunu başa düşdünüz.


Videoya baxın: ЧТО ТАКОЕ NULL. C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ. # 39