Visual Basic .NET - Visual Basic .NET

Visual Basic
VB.NET Logo.svg
paradigma Çoklu paradigma : yapılandırılmış , zorunlu , nesne yönelimli , bildirimsel , genel , yansıtıcı ve olay odaklı
Tarafından tasarlandı Microsoft
geliştirici Microsoft
İlk ortaya çıktı 2001 ; 20 yıl önce ( 2001 )
kararlı sürüm
2019 sürümü 16.9 / 2 Mart 2021 ; 5 ay önce ( 2021-03-02 )
Yazma disiplini Statik , hem güçlü hem zayıf , hem güvenli hem güvensiz , yalın
platformu .NET Framework , Mono , .NET
işletim sistemi Başta Windows
Ayrıca Android , BSD , iOS , Linux , macOS , Solaris ve Unix'te
Lisans Roslyn derleyicisi: Apache Lisansı 2.0
Dosya adı uzantıları .vb
İnternet sitesi docs .microsoft .com /dotnet /visual-basic /
Başlıca uygulamalar
.NET Framework SDK , Roslyn Derleyici ve Mono
lehçeler
Microsoft Visual Basic
Tarafından etkilenmiş
Klasik Visual Basic
Etkilenen
Küçük Temel

Visual Basic , aslen denilen Visual Basic .NET ( VB.NET ), bir olan çok paradigma , nesne yönelimli programlama dili üzerinde uygulanan, .NET , Mono ve .NET Framework . Microsoft, VB.NET'i 2002'de , son sürümü Visual Basic 6.0 olan orijinal Visual Basic dilinin halefi olarak başlattı . Adın ".NET" kısmı 2005'te çıkarılmış olsa da, bu makale, klasik Visual Basic ile aralarında ayrım yapmak için 2002'den beri yayımlanan tüm Visual Basic dillerine atıfta bulunmak için "Visual Basic [.NET]" kullanmaktadır . C# ve F# ile birlikte .NET ekosistemini hedefleyen üç ana dilden biridir. 11 Mart 2020 itibariyle Microsoft, VB.NET dilinin evriminin sona erdiğini duyurdu.

Microsoft'un Visual Basic'te geliştirmeye yönelik tümleşik geliştirme ortamı (IDE), Visual Studio'dur . Çoğu Visual Studio sürümü ticaridir ; tek istisna , ücretsiz olan Visual Studio Express ve Visual Studio Community'dir . Ayrıca, .NET Framework SDK , vbc.exe adlı ücretsiz bir komut satırı derleyicisi içerir. Mono ayrıca bir komut satırı VB.NET derleyicisi içerir.

Visual Basic genellikle ile birlikte kullanılır , Windows Forms GUI kütüphanesi yapmak masaüstü uygulamalarındaki için Windows'un . Windows Forms için Visual Basic ile programlama, bir GUI tasarımcısı kullanarak bir form üzerindeki denetimleri sürükleyip bırakmayı ve her denetim için karşılık gelen kodu yazmayı içerir.

Sözdizimi

Visual Basic, eylemleri belirtmek için deyimleri kullanır . En yaygın ifade, tek bir satırda değerlendirilecek bir ifadeden oluşan bir ifade ifadesidir . Bu değerlendirmenin bir parçası olarak, fonksiyonlar veya alt programlar olabilir denilen ve değişkenler olabilir atanan yeni değerler. İfadelerin normal sıralı yürütülmesini değiştirmek için Visual Basic, ayrılmış anahtar sözcüklerle tanımlanan birkaç kontrol akışı ifadesi sağlar. Yapılandırılmış programlama , iki koşullu yürütme yapısı ( If... Then... Else... End Ifve Select Case... Case... End Select) ve üç yinelemeli yürütme (döngü) yapısı ( Do... Loop, For... Tove For Each) dahil olmak üzere çeşitli yapılar tarafından desteklenir . For... Toifadesi bulunmalıdır her ikisi de ayrı başlatmayı ve test bölümleri vardır. (Aşağıdaki örneklere bakın.) For Eachİfade, bir listedeki her değerden geçer.

Ayrıca, Visual Basic'te:

  • İfade bloklarını tanımlamanın birleşik bir yolu yoktur. Bunun yerine, "If… Then" veya "Sub" gibi belirli anahtar sözcükler, kod alt bloklarının başlatıcıları olarak yorumlanır ve "End If" veya "End Sub" gibi eşleşen sonlandırma anahtar sözcüklerine sahiptir.
  • İfadeler iki nokta üst üste (":") ile veya satır sonu ile sonlandırılır . Visual Basic'te çok satırlı deyimler, bu tür her satırın sonunda " _" ile etkinleştirilir. Alt çizgi devam karakteri ihtiyacı, sürüm 10 ve sonraki sürümlerde büyük ölçüde kaldırıldı.
  • Eşittir işareti ( "=") her iki değişken ile ve buna karşılık bir değer verilerek kullanılır.
  • Yuvarlak parantezler (parantezler) dizilerle birlikte kullanılır , hem onları bildirmek hem de bunlardan birinde belirli bir dizinde bir değer elde etmek için. Visual Basic, alt yordamların veya işlevlerin parametrelerini tanımlamak için yuvarlak parantez kullanır.
  • Bir satırın başına veya satırın başında herhangi bir sayıda boşluk veya sekme karakterinden sonra veya satırdaki diğer kodlardan sonra yerleştirilen tek bir tırnak işareti (') veya anahtar sözcük REM, (geri kalan) satır bir yorumdur .

Basit örnek

Aşağıdaki, çok basit bir Visual Basic programıdır, klasik " Merhaba, Dünya! " örneğinin bir konsol uygulaması olarak oluşturulmuş bir versiyonudur :

Module Module1

    Sub Main()
        ' The classic "Hello, World!" demonstration program
        Console.WriteLine("Hello, World!")
    End Sub

End Module

Komut satırı penceresine " Merhaba, Dünya! " yazdırır . Her satır aşağıdaki gibi belirli bir amaca hizmet eder:

Module Module1

Bu bir modül tanımıdır. Modüller, sabitler veya değişkenler, işlevler veya yöntemler veya sınıflar gibi her türlü nesneyi içerebilen, ancak sınıflar gibi nesneler olarak başlatılamayan ve diğer modüllerden miras alınamayan bir kod bölümüdür. Modüller, bir programın diğer bölümlerinden referans alınabilecek kod kapsayıcıları olarak hizmet eder.
Bir modül ve onu içeren kod dosyasının aynı ada sahip olması yaygın bir uygulamadır. Ancak, tek bir kod dosyası birden fazla modül ve/veya sınıf içerebileceğinden bu gerekli değildir.

Sub Main()

Bu satır, "Ana" adlı bir alt programı tanımlar. "Ana", programın çalışmaya başladığı giriş noktasıdır.

Console.WriteLine("Hello, world!")

Bu satır, çıktı yazmanın asıl görevini gerçekleştirir. Konsol , bir komut satırı arabirimini ("konsol" olarak da bilinir) temsil eden ve işletim sisteminin standart akışlarına programlı erişim sağlayan bir sistem nesnesidir . Program , kendisine iletilen dizenin konsolda görüntülenmesine neden olan WriteLine Konsol yöntemini çağırır .

Console.WriteLine yerine, mesajı komut satırı penceresi yerine bir iletişim kutusunda yazdıran MsgBox kullanılabilir.

Karmaşık örnek

Bu kod parçası, Floyd'un Üçgenini konsola çıkarır:

Imports System.Console

Module Program

    Sub Main()
        Dim rows As Integer

        ' Input validation.
        Do Until Integer.TryParse(ReadLine("Enter a value for how many rows to be displayed: " & vbcrlf), rows) AndAlso rows >= 1
            WriteLine("Allowed range is 1 and {0}", Integer.MaxValue)
        Loop
      
        ' Output of Floyd's Triangle
        Dim current As Integer = 1
        Dim row As Integer 
        Dim column As Integer
        For row = 1 To rows
            For column = 1 To row
                Write("{0,-2} ", current)
                current += 1
            Next

            WriteLine()
        Next
    End Sub

    ''' <summary>
    ''' Like Console.ReadLine but takes a prompt string.
    ''' </summary>
    Function ReadLine(Optional prompt As String = Nothing) As String
        If prompt IsNot Nothing Then
            Write(prompt)
        End If

        Return Console.ReadLine()
    End Function

End Module

Klasik Visual Basic ile karşılaştırma

Visual Basic .NET'in Visual Basic'in başka bir sürümü olarak mı yoksa tamamen farklı bir dil olarak mı düşünülmesi gerektiği bir tartışma konusudur. Yapılandırılmış özel durum işleme ve kısa devreli ifadeler gibi yeni özellikleri destekleyen yeni eklemeler var . Ayrıca, VB.NET'e geçişle birlikte iki önemli veri türü değişikliği meydana geldi: Visual Basic 6 ile karşılaştırıldığında, Integer veri türü 16 bitten 32 bite iki katına çıkarıldı ve Long veri türü 32 bitten iki katına çıkarıldı. 64 bit için. Bu, VB.NET'in tüm sürümleri için geçerlidir. VB.NET'in tüm sürümlerinde 16 bitlik bir tam sayı artık Short. Benzer şekilde, Windows Forms düzenleyicisi stil ve işlev açısından Visual Basic form düzenleyicisine çok benzer.

Şeyler var önemli ölçüde değişti semantik-dan bir çalışan bir nesne tabanlı programlama dili olanlardır deterministik , referans sayılan dayanan motor COM tam için nesne yönelimli desteklediği dile .NET Framework kombinasyonundan oluşur arasında ortak dil çalışma zamanı (bir sanal makine kullanarak kuşak çöp toplama ve just-in-time derleme motoru) ve çok daha büyük sınıf kitaplığından . İkincisinin artan genişliği, VB geliştiricilerinin dile gelirken uğraşmak zorunda oldukları bir sorundur, ancak bu, Visual Studio 2005'teki My özelliği tarafından bir şekilde ele alınmaktadır .

Değişiklikler, performans ve sürdürülebilirlik açısından yapılacak "doğru" şey hakkındaki temel varsayımların çoğunu değiştirdi. Bazı işlevler ve kitaplıklar artık mevcut değil; diğerleri mevcuttur, ancak "yerel" .NET alternatifleri kadar verimli değildir. Derleseler bile, çoğu dönüştürülmüş Visual Basic 6 uygulaması , yeni dilden tam olarak yararlanmak için bir miktar yeniden düzenleme gerektirecektir . Söz dizimi, hata ayıklama uygulamaları, dağıtım ve terminolojideki değişiklikleri kapsayan belgeler mevcuttur.

karşılaştırmalı örnekler

Aşağıdaki basit örnekler, VB ve VB.NET sözdizimini karşılaştırır. Geliştiricinin bir form oluşturduğunu, üzerine bir düğme yerleştirdiğini ve her örnekte gösterilen alt rutinleri adı geçen düğmenin click olay işleyicisiyle ilişkilendirdiğini varsayarlar . Her örnek, formdaki butona tıklandıktan sonra bir "Merhaba Dünya" mesaj kutusu oluşturur.

Visual Basic 6:

Private Sub Command1_Click()
    MsgBox "Hello, World"
End Sub

VB.NET (MsgBox veya MessageBox sınıfı kullanılabilir):

Private Sub Button1_Click(sender As object, e As EventArgs) Handles Button1.Click
    MsgBox("Hello, World")
End Sub
  • Hem Visual Basic 6 hem de Visual Basic .NET , tasarım görünümünde ilgili düğme çift tıklandığında Subve End Subdeyimlerini otomatik olarak oluşturur . Visual Basic .NET ayrıca gerekli Classve End Classdeyimleri de üretecektir . Geliştiricinin "Merhaba, Dünya" mesaj kutusunu görüntülemek için yalnızca ifadeyi eklemesi gerekir.
  • Tüm prosedür çağrıları VB.NET'te parantezlerle yapılmalıdır, oysa Visual Basic 6'da işlevler (parantez gerekir) ve altlar (anahtar sözcüğü kullanılarak çağrılmadıkça parantezlere izin verilmez) için farklı kurallar vardı Call.
  • İsimler Command1ve Button1zorunlu değildir. Ancak bunlar, sırasıyla Visual Basic 6 ve VB.NET'te bir komut düğmesi için varsayılan adlardır.
  • VB.NET'te Handlesanahtar sözcük, sub öğesini nesnenin olayı Button1_Clickiçin bir işleyici yapmak için kullanılır . Visual Basic 6'da, olay işleyici alt öğeleri, nesnenin adından ("Komut1"), bir alt çizgiden ("_") ve olayın adından ("Tıkla", dolayısıyla "Komut1_Tıkla") oluşan belirli bir ada sahip olmalıdır.ClickButton1
  • Adında bir işlevi yoktur MessageBox.Showiçinde Microsoft.VisualBasic(yerine kullanılabilecek ad MsgBox(mesaj kutusunu gösteren ama aynı zamanda ilgili sınırlı değildir sadece en iyi uygulama olarak kullanılmak üzere hangi işlevi hakkında bir tartışma vardır Visual Basic 6 karşılık gelen işlevine benzer şekilde) Microsoft.VisualBasicad alanının diğer özellikleri ). Framework sınıfları daha fazla özelliğe sahip olduğundan ve dile daha az özgü olduğundan, bazı programcılar işleri ".NET yolu" ile yapmayı tercih ederler. Diğerleri, dile özgü özelliklerin kullanılmasının kodu daha okunabilir hale getirdiğini iddia eder (örneğin, int(C#) veya Integer(VB.NET) yerine System.Int32).
  • Visual Basic 2008'de, dahil edilmesi ByVal sender as Object, ByVal e as EventArgsisteğe bağlı hale gelmiştir.

Aşağıdaki örnek, Visual Basic 6 ve VB.NET arasındaki farkı gösterir. Her iki örnek de etkin pencereyi kapatır .

Visual Basic 6:

Sub cmdClose_Click()
    Unload Me
End Sub

VB.NET:

Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click
    Close()
End Sub

'cmd' öneki, daha önce bahsedilen yeni sözleşmeye uygun olarak 'btn' öneki ile değiştirilir.

Visual Basic 6, ortak operatör kısayolları sağlamadı. Aşağıdakiler eşdeğerdir:

Visual Basic 6:

Sub Timer1_Timer()
    'Reduces Form Height by one pixel per tick
    Me.Height = Me.Height - 1
End Sub

VB.NET:

Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    Me.Height -= 1
End Sub

C# ile karşılaştırma

C# ve Visual Basic, Microsoft'un .NET Framework üzerinde programlamak için yaptığı ilk dillerdir (daha sonra F# ve daha fazlası eklendi; diğerleri de dil ekledi). C# ve Visual Basic sözdizimsel olarak farklı olsa da, farklılıkların çoğunlukla sona erdiği yer burasıdır. Microsoft, bu dillerin her ikisini de aynı .NET Framework geliştirme platformunun parçası olacak şekilde geliştirdi. Her ikisi de Microsoft'taki aynı dil geliştirme ekibi tarafından geliştirilir, yönetilir ve desteklenir. Aynı .NET Framework çalışma zamanı kitaplıklarına karşı çalışan aynı ara dilde (IL) derlenirler. Programlama yapılarında bazı farklılıklar olmasına rağmen, farklılıkları öncelikle sözdizimseldir ve birinin Microsoft tarafından Visual Basic 6'dan dönüştürmeye yardımcı olmak için sağlanan Visual Basic "Uyumluluk" kitaplıklarından kaçınıldığı varsayılırsa, VB'deki hemen hemen her özelliğin C# ve tersine. Son olarak, her iki dil de işlevlerini genişletmek için .NET Framework'ün aynı Temel Sınıflarına başvurur. Sonuç olarak, birkaç istisna dışında, herhangi bir dilde yazılmış bir program, diğerine çevirmek için basit bir sözdizimi dönüştürücüsü aracılığıyla çalıştırılabilir. Bu görev için birçok açık kaynak kodlu ve ticari olarak temin edilebilen ürün vardır.

Örnekler

Selam Dünya!

Windows Formları Uygulaması

Button1 adlı bir düğme gerektirir.

Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        MsgBox("Hello world!", MsgBoxStyle.Information, "Hello world!") ' Show a message that says "Hello world!".
    End Sub
End Class
Image
Selam Dünya! pencere

Konsol uygulaması

Module Module1

    Sub Main()
        Console.WriteLine("Hello world!") ' Write in the console "Hello world!" and start a new line.
        Console.ReadKey() ' The user must press any key before the application ends.
    End Sub
End Module

Konuşuyorum

Windows Formları Uygulaması

'TextBox1' başlıklı bir TextBox ve Button1 adlı bir düğme gerektirir.

Public Class Form1
    
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        CreateObject("Sapi.Spvoice").Speak(TextBox1.Text)
    End Sub
End Class

Konsol uygulaması

Module Module1
    Private Voice = CreateObject("Sapi.Spvoice")
    Private Text As String

    Sub Main()
        Console.Write("Enter the text to speak: ") ' Say "Enter the text to speak: "
        Text = Console.ReadLine() ' The user must enter the text to speak.
        Voice.Speak(Text) ' Speak the text the user has entered.
    End Sub
End Module

Sürüm geçmişi

Başaran klasik Visual Basic sürüm 6.0, Visual Basic .NET ilk sürümünü 2020 2002 As yılında girmiştir Visual Basic .NET on sürümü yayınlandı.

2002 (VB 7.0)

İlk sürüm olan Visual Basic .NET, .NET Framework 1.0'a dayanır . En önemli özellik, klasik Visual Basic ile çelişen yönetilen koddur .

2003 (VB 7.1)

Visual Basic .NET 2003, .NET Framework 1.1 ile yayımlanmıştır . Yeni özellikler, .NET Compact Framework desteğini ve daha iyi bir VB yükseltme sihirbazını içeriyordu . .NET IDE'nin (özellikle arka plan derleyicisinin ) ve çalışma zamanının performansı ve güvenilirliğinde de iyileştirmeler yapıldı . Ayrıca Visual Basic .NET 2003, Visual Studio.NET Academic Edition'da mevcuttu ve her ülkeden belirli sayıda akademisyene ücretsiz olarak dağıtıldı.

2005 (VB 8.0)

Visual Basic .NET 2003'ten sonra Microsoft, bir sonraki Visual Basic 2005 sürümünü çağırarak, ürünün adından ".NET"i çıkardı.

Bu sürüm için Microsoft, Visual Basic .NET'in hızlı bir uygulama geliştirme platformu olarak odağını güçlendirmeyi ve onu C#' tan daha da farklılaştırmayı amaçlayan birçok özellik ekledi :

  • Düzenle ve Devam Et özelliği
  • Tasarım zamanı ifadesi değerlendirmesi
  • Aşağıdakileri sağlayan "My" adlı bir sözde ad alanı :
    • .NET Framework'ün, aksi takdirde erişmek için kullanmak yerine kullanmak gibi önemli kod gerektiren belirli alanlarına kolay erişimMy.Form2.Text = " MainForm "System.WindowsApplication1.Forms.Form2.text = " MainForm "
    • Dinamik olarak oluşturulmuş sınıflar (örneğin My.Forms )
  • Geliştirilmiş VB-VB.NET dönüştürücü
  • Kaynakları boşaltmak için Dispose modelini gerektiren nesnelerin kullanımını basitleştiren bir "using" anahtar sözcüğü
  • Hata ayıklama sırasında Visual Studio .NET IDE tarafından yazılan standart kodu ve sistem kitaplığı kodunu gizleyen (adım adım ilerleyen) Just My Code özelliği
  • Veri Kaynağı bağlama, veritabanı istemci/sunucu geliştirmeyi kolaylaştırır

Kendisi ve diğer .NET dilleri arasındaki boşlukları kapatmak için bu sürüm şunları ekledi:

Visual Basic 2005 tanıtıldı IsNotyapar operatörü 'If X IsNot Y'eşdeğerdir 'If Not X Is Y'. Bir Microsoft patent başvurusunun konusu olduğu tespit edildiğinde ün kazandı.

2008 (VB 9.0)

Visual Basic 9.0, 19 Kasım 2007'de .NET Framework 3.5 ile birlikte yayımlandı .

Bu sürüm için Microsoft, aşağıdakiler dahil birçok özellik ekledi:

2010 (VB 10.0)

Nisan 2010'da Microsoft, Visual Basic 2010'u yayımladı. Microsoft, bu sürüm için Dinamik Dil Çalışma Zamanı'nı (DLR) kullanmayı planlamıştı, ancak her iki dili birbirine daha yakın bir eşliğe getirmek için Visual Basic ve kardeş dil C# arasında bir birlikte evrim stratejisine geçti. Visual Basic'in doğuştan gelen CLR ve COM nesneleri ile dinamik olarak etkileşim kurma yeteneği, IronPython ve IronRuby gibi DLR üzerine inşa edilmiş dinamik dillerle çalışacak şekilde geliştirilmiştir . Visual Basic derleyicisi, birçok durumda " _" satır devam karakterlerine olan ihtiyacı ortadan kaldırarak, bir dizi ortak bağlamda satır devamını çıkaracak şekilde geliştirildi. Ayrıca, satır içi İşlevlerin mevcut desteği, hem Alt hem de İşlev lambdalarının çok satırlı sürümlerinin yanı sıra satır içi Sub'lar için destekle tamamlandı.

2012 (VB 11.0)

Visual Basic 2012, .NET Framework 4.5 ile birlikte yayımlanmıştır . Bu sürümde tanıtılan başlıca özellikler şunlardır:

  • "async" ve "await" ifadeleri ile asenkron programlama
  • yineleyiciler
  • Çağrı hiyerarşisi
  • Arayan bilgisi
  • "Ad alanı" ifadelerinde "Global" anahtar kelimesi

2013 (VB 12.0)

Visual Basic 2013, Visual Studio 2013 ile birlikte .NET Framework 4.5.1 ile birlikte piyasaya sürüldü. Ayrıca Developer Pack yükleyerek .NET Framework 4.5.2 uygulamaları oluşturabilir.

2015 (VB 14.0)

Visual Basic 2015 (VB "14.0" adlı kod), Visual Studio 2015 ile birlikte yayınlandı. Dil özellikleri arasında yeni bir "?." operatörü satır içi boş denetimler gerçekleştirir ve dizeleri satır içi biçimlendirmek için yeni bir dize enterpolasyon özelliği dahildir.

2017 (VB 15.x)

Visual Basic 2017 (VB "15.0" adlı kod), Visual Studio 2017 ile yayımlandı. 2017, 15.3, 15.5, 15.8 revizyonu ile yeni Visual Basic 15 dil özellikleri desteğini genişletiyor. Kaynak kodun tek bir eylemle düzenlenmesine olanak tanıyan yeni yeniden düzenlemeleri sunar.

2019 (VB 16.0)

Visual Basic 2019 (VB "16.0" adlı kod), Visual Studio 2019 ile birlikte yayınlandı. Visual Basic'in .NET Core odaklı ilk sürümüdür.

Platformlar arası ve açık kaynak geliştirme

Resmi Visual Basic derleyicisi Visual Basic'te yazılmıştır ve .NET Derleyici Platformunun bir parçası olarak GitHub'da mevcuttur . Mono geliştirme platformu, Visual Basic'e özgü kitaplıkların ve Visual Basic'te yazılmış bir Visual Basic 2005 uyumlu derleyicinin yanı sıra standart çerçeve kitaplıklarının bir uygulamasını sağlamasına rağmen, Visual Basic geliştirme için açık kaynaklı araçların oluşturulması C# ile karşılaştırıldığında yavaş olmuştur. gibi Windows'un Forms GUI kütüphanesi.

SharpDevelop ve MonoDevelop , açık kaynaklı alternatif IDE'lerdir . Gambas ortamı da Visual Basic benzer ama farklıdır.

Ayrıca bakınız

Referanslar

daha fazla okuma

  1. "Görsel Temel Dil Belirtimi 8.0" . Microsoft şirketi. 15 Kasım 2005 . Erişim tarihi: 10 Aralık 2010 .
  2. "Görsel Temel Dil Belirtimi 9.0" . Microsoft şirketi. 19 Aralık 2007 . Erişim tarihi: 28 Eylül 2011 .
  3. "Görsel Temel Dil Belirtimi 11.0" . Microsoft şirketi. 7 Haziran 2013 . Erişim tarihi: 22 Eylül 2013 .

Dış bağlantılar