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 Publicbu özel durumu da alabilirsiniz. Bunun nedeni geç bağlamanın yalnızca üyelere erişim izni vermesidir Public .

Option Strict Deyimi tür denetimini Onayarladığı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 StrictOff 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ı ABCbir öğ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 ABCbaşvurmaları gerekir. Daha sonra sınıfınızı yeniden derler ve öğenin adını abcolarak 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.

Ayrıca bkz.