Visual Basic'de Değişkenlerle İlgili Sorun Giderme
Bu sayfada, Visual Basic'te değişkenlerle çalışırken oluşabilecek bazı yaygın sorunlar listelenir.
Nesnenin Üyelerine Erişilemiyor
Kodunuz bir nesnedeki bir özelliğe veya yönteme erişmeye çalışırsa, iki olası hata sonucu vardır:
Nesne değişkenini belirli bir türde olarak bildirirseniz ve sonra bu tür tarafından tanımlanmayan bir üyeye başvurursanız, derleyici bir hata iletisi oluşturabilir.
Bir nesne değişkenine atanan nesne kodunuzun erişmeye çalıştığı üyeyi kullanıma sunmadığında bir çalışma zamanı MemberAccessException oluşur. Nesne Veri Türü değişkeni söz konusu olduğunda, üye değilse
Public
bu özel durumu da alabilirsiniz. Bunun nedeni geç bağlamanın yalnızca üyelere erişim izni vermesidirPublic
.
Option Strict Deyimi tür denetimini On
ayarladığında, nesne değişkeni yalnızca bildirdiğiniz sınıfın yöntemlerine ve özelliklerine erişebilir. Aşağıdaki örnek bunu göstermektedir.
Dim p As Object = New System.Windows.Forms.Label
Dim q As System.Windows.Forms.Label = New System.Windows.Forms.Label
Dim j, k As Integer
' The following statement generates a compiler error.
j = p.Left
' The following statement retrieves the left edge of the label
' in pixels.
k = q.Left
Bu örnekte, p
yalnızca özelliğini içermeyen sınıfın Object kendi üyelerini Left
kullanabilir. Öte yandan, türünde Labelolduğu bildirildi, q
bu nedenle ad alanında System.Windows.Forms sınıfın Label tüm yöntemlerini ve özelliklerini kullanabilir.
Doğru Yaklaşım
Belirli bir sınıfın nesnesinin tüm üyelerine erişebilmek için, mümkün olduğunda nesne değişkenini bu sınıfın türünde olacak şekilde bildirin. Bunu yapamıyorsanız, örneğin derleme zamanında nesne türünü bilmiyorsanız, değişkenini Nesne Veri Türünde olarak ayarlamanız Option Strict
Off
ve bildirmeniz gerekir. Bu, herhangi bir türdeki nesnelerin değişkene atanmasına izin verir ve şu anda atanmış olan nesnenin kabul edilebilir bir türde olduğundan emin olmak için gerekli adımları atmalısınız. Bu belirlemeyi yapmak için TypeOf İşlecini kullanabilirsiniz.
Diğer Bileşenler Değişkeninize Erişemiyor
Visual Basic adları büyük/küçük harfe duyarlı değildir. İki ad yalnızca alfabetik durumda farklıysa, derleyici bunları aynı adla yorumlar. Örneğin, ve olarak kabul eder ABC
ve abc
bildirilen aynı öğeye başvurur.
Ancak ortak dil çalışma zamanı (CLR) büyük/küçük harfe duyarlı bağlama kullanır. Bu nedenle, bir derleme veya DLL oluşturup diğer derlemeler için kullanılabilir hale getirdiğinizde, adlarınız artık büyük/küçük harfe duyarlı değildir. Örneğin, adlı ABC
bir öğesiyle bir sınıf tanımlarsanız ve diğer derlemeler ortak dil çalışma zamanı aracılığıyla sınıfınızı kullanırsa, öğeye olarak ABC
başvurmaları gerekir. Daha sonra sınıfınızı yeniden derler ve öğenin adını abc
olarak değiştirirseniz, sınıfınızı kullanan diğer derlemeler artık bu öğeye erişemez. Bu nedenle, bir derlemenin güncelleştirilmiş bir sürümünü serbest bıraktığınızda, genel öğelerin alfabetik büyük/küçük harflerini değiştirmemelisiniz.
Daha fazla bilgi için bkz. Ortak Dil Çalışma Zamanı.
Doğru Yaklaşım
Diğer bileşenlerin değişkenlerinize erişmesine izin vermek için adlarını büyük/küçük harfe duyarlıymış gibi değerlendirin. Sınıfınızı veya modülünüzü test ederken, diğer derlemelerin beklediğiniz değişkenlere bağlandığından emin olun. Bir bileşeni yayımladıktan sonra, servis taleplerini değiştirmek de dahil olmak üzere var olan değişken adlarında herhangi bir değişiklik yapmayın.
Yanlış Değişken Kullanılıyor
Aynı ada sahip birden fazla değişkeniniz olduğunda, Visual Basic derleyicisi bu ada yapılan her başvuruyu çözümlemeye çalışır. Değişkenlerin kapsamı farklıysa, derleyici en dar kapsamlı bildirime başvuruyu çözümler. Aynı kapsama sahipse çözüm başarısız olur ve derleyici hata sinyali gönderir. Daha fazla bilgi için bkz. Bildirilen Öğelere Başvurular.
Doğru Yaklaşım
Aynı ada ancak farklı kapsama sahip değişkenleri kullanmaktan kaçının. Diğer derlemeleri veya projeleri kullanıyorsanız, bu dış bileşenlerde tanımlanan adları mümkün olduğunca kullanmaktan kaçının. Aynı ada sahip birden fazla değişkeniniz varsa, her başvuruyu uygun gördüğünüzden emin olun. Daha fazla bilgi için bkz. Bildirilen Öğelere Başvurular.