ProgramlamaVB/VB.NET geliştirici

Visual Basic'te Kullanıcı Tanımlı Türler (User-Defined Types, UDT'ler) nasıl uygulanır ve ne zaman sınıflar yerine kullanılmalıdır?

Hintsage yapay zeka asistanı ile mülakatları geçin

Cevap

Visual Basic'te kullanıcı tanımlı türler (Type VB6'da veya Structure VB.NET'te) birkaç farklı türden değişken içeren kendi bileşik türlerinizi tanımlamanıza olanak tanır. Bu, ilişkili verileri paketlemek için kullanışlıdır.

UDT'ler (VB6):

Type Person Name As String Age As Integer Height As Single End Type Dim employee As Person employee.Name = "Alexey" employee.Age = 32 employee.Height = 1.85

Structures (VB.NET):

Structure Person Public Name As String Public Age As Integer Public Height As Single End Structure Dim employee As Person employee.Name = "Alexey"

Ne zaman kullanılmalı:

  • Mantık içermeyen hafif veri kapları için
  • Performansın önemli olduğu durumlarda (yapılar yığında oluşturulur)
  • Miras alma işlevselliği gerekmiyorsa — yapılar mirası desteklemez

Aksine: Sınıflar, mantığın kapsüllenmesi, miras alma, çok biçimlilik veya arayüzlerin uygulanması gerektiğinde kullanılır.

Kandırmaca Soru

VB.NET'teki yapılara neden Nothing değeri atanamaz?

Cevap: Nothing yalnızca sınıf değişkenlerine (nesnelerine) atanabilir, çünkü onlar referansları saklar. Yapılar değere dayalı türlerdir; her zaman bir değer seti içerirler; Nothing değerinin atanması derleme hatasına yol açar.

Dim s As Person = Nothing 'Hata! Yapılar Nothing olamaz (Nullable(Of T) hariç)

Konuyla ilgili bilinçsizlikten kaynaklanan gerçek hata örnekleri


Hikaye

Eski bir projede, birçok alanı olan bir yapı ile basit bir dizi değiştirilmek istendi, ancak yeni kod beklenmedik bir şekilde daha yavaş çalıştı. Anlaşıldı ki, yapı çok büyük boyutlardaydı ve sıklıkla fonksiyonlara kopyalanıyordu. Sınıf kullanılsaydı, yalnızca referanslar kopyalanırdı, yapının tamamı değil.


Hikaye

VB6-UDT'nin VB.NET'e taşınmasından sonra, geliştiricilerden biri uzaktan çağrıda yapının ISerializable arayüzünü uygulamayı unuttu. Sonuç olarak, silinen nesne seri hale getirilemedi ve süreçler arası etkileşimde hatalara yol açtı.


Hikaye

Geometri ile ilgili bir modülde yapı, dizilere (değişken) referanslar içeriyordu. Bu yapının çoklu örnekleri, içindeki referansların aynı veri dizilerine işaret etmesi nedeniyle beklenmedik etkilere neden oldu — mutasyonlar tüm kopyalarda yansıyordu!