Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Visual Basic'in her sürümü için temel özellik adları ve dilin en son sürümlerindeki yeni ve gelişmiş özelliklerin ayrıntılı açıklamaları listelenmektedir.
Geçerli sürüm
Visual Basic 16.9 / Visual Studio 2019 sürüm 16.9
Yeni özellikler için bkz. Visual Basic 16.9.
En son .NET SDK'sını .NET indirmeleri sayfasından indirebilirsiniz.
Önceki sürümler
Visual Basic 16.0 / Visual Studio 2019 sürüm 16.0
Yeni özellikler için bkz. Visual Basic 16.0.
Visual Basic 15.5 / Visual Studio 2017 sürüm 15.5
Yeni özellikler için bkz. Visual Basic 15.5.
Visual Basic 15.3 / Visual Studio 2017 sürüm 15.3
Yeni özellikler için bkz. Visual Basic 15.3.
Visual Basic 15 / Visual Studio 2017
Yeni özellikler için bkz. Visual Basic 2017.
Visual Basic / Visual Studio 2015
Yeni özellikler için bkz. Visual Basic 14.
Visual Basic / Visual Studio 2013
.NET Derleyici Platformu'nun teknoloji önizlemeleri ("Roslyn")
Visual Basic / Visual Studio 2012
Async ve await anahtar sözcükler, yineleyiciler, arayan bilgisi öznitelikleri
Visual Basic, Visual Studio 2010
Otomatik olarak uygulanan özellikler, koleksiyon başlatıcıları, örtük satır devamlılığı, dinamik, genel co/contra varyansı, genel ad alanı erişimi
Visual Basic / Visual Studio 2008
Dil Tümleşik Sorgusu (LINQ), XML değişmez değerleri, yerel tür çıkarımı, nesne başlatıcılar, anonim türler, uzantı yöntemleri, yerel var tür çıkarımı, lambda ifadeleri, if işleç, kısmi yöntemler, null atanabilir değer türleri
Visual Basic / Visual Studio 2005
Tür My ve yardımcı türleri (uygulamaya, bilgisayara, dosya sistemine, ağa erişim)
Visual Basic / Visual Studio .NET 2003
Bit kaydırma işleçleri, döngü değişkeni bildirimi
Visual Basic / Visual Studio .NET 2002
Visual Basic .NET'in ilk sürümü
Visual Basic 16.9
Visual Basic 16.9, yalnızca başlatma özellikleri kullanımını sağlar.
Visual Basic 16.0
Visual Basic 16.0, .NET Core'a Visual Basic Çalışma Zamanı 'nın (microsoft.visualbasic.dll) daha fazla özellik sağlamasına odaklanır ve .NET Core'a odaklanan ilk Visual Basic sürümüdür. Visual Basic Çalışma Zamanı'nın WinForms'a bağlı bölümleri .NET Core 3.0'a eklendi.
Deyimler içinde daha fazla yerde açıklamalara izin verilir
Visual Basic 15.5 ve önceki sürümlerde açıklamalara yalnızca boş satırlarda, bir deyimin sonunda veya örtük satır devamlılığı izin verilen bir deyimin içindeki belirli yerlerde izin verilir. Visual Basic 16.0'dan başlayarak, açık satır devamlılıklarından sonra ve bir boşluk ve ardından alt çizgi ile başlayan bir satırdaki bir deyim içinde açıklamalara da izin verilir.
Public Sub Main()
cmd.CommandText = ' Comment is allowed here without _
"SELECT * FROM Titles JOIN Publishers " _ ' This is a comment
& "ON Publishers.PubId = Titles.PubID " _
_ ' This is a comment on a line without code
& "WHERE Publishers.State = 'CA'"
End Sub
Kayan noktadan tamsayıya dönüştürme iyileştirildi
Visual Basic'in önceki sürümlerinde , Double ve Single değerlerinin tamsayılara dönüştürülmesi görece düşük performans sunuyordu. Visual Basic 16.0, aşağıdaki yöntemlerden herhangi biri tarafından döndürülen değeri iç Visual Basic tamsayı dönüştürme işlevlerinden birine (CByte, CInt, CLng, CSByte, CUShort, CUInt, CULng) geçirdiğinizde veya Seçenek Katı olarak ayarlandığında Offaşağıdaki yöntemlerden herhangi biri tarafından döndürülen değer örtük olarak tamsayı türüne geçirildiğinde kayan nokta dönüştürmelerinin performansını önemli ölçüde artırır:
- Conversion.Fix(Double)
- Conversion.Fix(Object)
- Conversion.Fix(Single)
- Conversion.Int(Double)
- Conversion.Int(Object)
- Conversion.Int(Single)
- Math.Ceiling(Double)
- Math.Floor(Double)
- Math.Round(Double)
- Math.Truncate(Double)
Bu iyileştirme, kodun daha hızlı çalışmasına olanak tanır; tamsayı türlerine çok fazla sayıda dönüştürme işlemi sunan kod için iki kat daha hızlıdır. Aşağıdaki örnekte, bu iyileştirmeden etkilenen bazı basit yöntem çağrıları gösterilmektedir:
Dim s As Single = 173.7619
Dim d As Double = s
Dim i1 As Integer = CInt(Fix(s)) ' Result: 173
Dim b1 As Byte = CByte(Int(d)) ' Result: 173
Dim s1 AS Short = CShort(Math.Truncate(s)) ' Result: 173
Dim i2 As Integer = CInt(Math.Ceiling(d)) ' Result: 174
Dim i3 As Integer = CInt(Math.Round(s)) ' Result: 174
Bu değerin kayan nokta değerlerini yuvarlama yerine kesildiğini unutmayın.
Visual Basic 15.5
Sondaki olmayan adlandırılmış bağımsız değişkenler
Visual Basic 15.3 ve önceki sürümlerde, bir yöntem çağrısı hem konuma hem de ada göre bağımsız değişkenler eklediğinde, konumsal bağımsız değişkenlerin adlandırılmış bağımsız değişkenlerin önüne alınması gerekiyordu. Visual Basic 15.5'den başlayarak, son konumsal bağımsız değişkene kadar olan tüm bağımsız değişkenler doğru konumda olduğu sürece konumsal ve adlandırılmış bağımsız değişkenler herhangi bir sırada görünebilir. Bu, kodu daha okunabilir hale getirmek için adlandırılmış bağımsız değişkenler kullanıldığında özellikle yararlıdır.
Örneğin, aşağıdaki yöntem çağrısı, adlandırılmış bağımsız değişken arasında iki konumsal bağımsız değişken içerir. Adlandırılmış bağımsız değişken, 19 değerinin bir yaşı temsil ettiğini açıkça gösterir.
StudentInfo.Display("Mary", age:=19, #9/21/1998#)
Private Protected üye erişimi değiştiricisi
Bu yeni anahtar sözcük bileşimi, hem kendi içeren sınıfındaki tüm üyeler tarafından hem de içeren sınıftan türetilen türlere göre erişilebilen bir üyeyi tanımlar, ancak yalnızca bunları içeren derlemede de bulunurlar. Yapılar devralınamadığından, Private Protected yalnızca bir sınıfın üyelerine uygulanabilir.
Baştaki onaltılık/ikili/sekizli ayırıcı
Visual Basic 2017, alt çizgi karakteri (_) için basamak ayırıcısı desteği ekledi. Visual Basic 15.5'den başlayarak, ön ek ve onaltılık, ikili veya sekizli basamaklar arasında öncü ayırıcı olarak alt çizgi karakterini kullanabilirsiniz. Aşağıdaki örnekte, 3.271.948.384 sayısını onaltılık sayı olarak tanımlamak için öndeki basamak ayırıcısı kullanılır:
Dim number As Integer = &H_C305_F860
Alt çizgi karakterini öncü ayırıcı olarak kullanmak için Visual Basic proje (*.vbproj) dosyanıza aşağıdaki öğeyi eklemeniz gerekir:
<PropertyGroup>
<LangVersion>15.5</LangVersion>
</PropertyGroup>
Visual Basic 15.3
Adlandırılmış tanımlama grubu çıkarımı
Değişkenlerden tanımlama grubu öğelerinin değerini atadığınızda, Visual Basic ilgili değişken adlarından tanımlama grubu öğelerinin adını çıkarsar; bir tanımlama grubu öğesini açıkça adlandırmanız gerekmez. Aşağıdaki örnekte, , ve capitaladlı üç öğe statestateNameiçeren bir tanımlama grubu oluşturmak için çıkarım kullanılır.
Const state As String = "MI"
Const stateName As String = "Michigan"
Const capital As String = "Lansing"
Dim stateInfo = (state, stateName, capital)
Console.WriteLine($"{stateInfo.stateName}: 2-letter code: {stateInfo.State}, Capital {stateInfo.capital}")
' The example displays the following output:
' Michigan: 2-letter code: MI, Capital Lansing
Ek derleyici anahtarları
Visual Basic komut satırı derleyicisi artık başvuru derlemelerinin çıkışını denetlemek için -refout ve -refonly derleyici seçeneklerini destekliyor. -refout , başvuru derlemesinin çıkış dizinini tanımlar ve -refonly yalnızca bir başvuru derlemesinin derlemeyle çıkış olacağını belirtir.
Visual Basic 15
Tanımlama kümeleri, tek bir yöntem çağrısından birden çok değer döndürmek için en yaygın olarak kullanılan basit bir veri yapısıdır. Normalde, bir yöntemden birden çok değer döndürmek için aşağıdakilerden birini yapmanız gerekir:
Özel bir tür (a
Classveya aStructure) tanımlayın. Bu ağır bir çözümdür.yönteminden bir değer döndürmeye ek olarak bir veya daha fazla
ByRefparametre tanımlayın.
Visual Basic'in tanımlama grupları desteği, hızlı bir şekilde bir tanımlama grubu tanımlamanıza, isteğe bağlı olarak değerlerine anlamsal adlar atamanıza ve değerlerini hızlı bir şekilde almanıza olanak tanır. Aşağıdaki örnek yöntemine bir çağrı sarmalar TryParse ve bir tanımlama grubu döndürür.
Imports System.Globalization
Public Module NumericLibrary
Public Function ParseInteger(value As String) As (Success As Boolean, Number As Integer)
Dim number As Integer
Return (Integer.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, number), number)
End Function
End Module
Daha sonra yöntemini çağırabilir ve döndürülen tanımlama grubu aşağıdaki gibi bir kodla işleyebilirsiniz.
Dim numericString As String = "123,456"
Dim result = ParseInteger(numericString)
Console.WriteLine($"{If(result.Success, $"Success: {result.Number:N0}", "Failure")}")
Console.ReadLine()
' Output: Success: 123,456
İkili değişmez değerler ve basamak ayırıcıları
veya &bön ekini &B kullanarak ikili değişmez değer tanımlayabilirsiniz. Ayrıca, okunabilirliği artırmak için basamak ayırıcısı olarak alt çizgi karakterini _kullanabilirsiniz. Aşağıdaki örnek, bir Byte değer atamak ve bunu ondalık, onaltılık ve ikili sayı olarak görüntülemek için her iki özelliği de kullanır.
Dim value As Byte = &B0110_1110
Console.WriteLine($"{NameOf(value)} = {value} (hex: 0x{value:X2}) " +
$"(binary: {Convert.ToString(value, 2)})")
' The example displays the following output:
' value = 110 (hex: 0x6E) (binary: 1101110)
Daha fazla bilgi için Bayt, Tamsayı, Uzun, Kısa, SByte, UInteger, ULong ve UShort veri türlerinin "Değişmez değer atamaları" bölümüne bakın.
C# başvuru dönüş değerleri desteği
C# başvuru dönüş değerlerini destekler. Diğer bir ifadeyle, çağıran yöntem başvuru tarafından döndürülen bir değer aldığında, başvurunun değerini değiştirebilir. Visual Basic, başvuru dönüş değerlerine sahip yöntemler yazmanıza izin vermez, ancak başvuru dönüş değerlerini kullanmanıza ve değiştirmenize olanak sağlar.
Örneğin, C# dilinde yazılan aşağıdaki Sentence sınıf, belirtilen alt FindNext dizeyle başlayan bir tümcede sonraki sözcüğü bulan bir yöntem içerir. Dize bir başvuru dönüş değeri olarak döndürülür ve yöntemine başvuru tarafından geçirilen bir Boolean değişken, aramanın başarılı olup olmadığını gösterir. Bu, döndürülen değerin okunmasının yanı sıra çağıranın da bunu değiştirebileceği ve bu değişikliğin sınıfına Sentence yansıtılmış olduğu anlamına gelir.
using System;
public class Sentence
{
private string[] words;
private int currentSearchPointer;
public Sentence(string sentence)
{
words = sentence.Split(' ');
currentSearchPointer = -1;
}
public ref string FindNext(string startWithString, ref bool found)
{
for (int count = currentSearchPointer + 1; count < words.Length; count++)
{
if (words[count].StartsWith(startWithString))
{
currentSearchPointer = count;
found = true;
return ref words[currentSearchPointer];
}
}
currentSearchPointer = -1;
found = false;
return ref words[0];
}
public string GetSentence()
{
string stringToReturn = null;
foreach (var word in words)
stringToReturn += $"{word} ";
return stringToReturn.Trim();
}
}
En basit haliyle, aşağıdaki gibi bir kod kullanarak cümlede bulunan sözcüğü değiştirebilirsiniz. Yöntemine bir değer atamadığınıza, yöntemin döndürdüğü ifadeye (başvuru dönüş değeri) atamadığınıza dikkat edin.
Dim sentence As New Sentence("A time to see the world is now.")
Dim found = False
sentence.FindNext("A", found) = "A good"
Console.WriteLine(sentence.GetSentence())
' The example displays the following output:
' A good time to see the world is now.
Ancak bu kodla ilgili bir sorun, eşleşme bulunamazsa yöntemin ilk sözcüğü döndürmesidir. Örnek, eşleşme bulunup bulunmadığını belirlemek için bağımsız değişkenin Boolean değerini incelemediğinden, eşleşme yoksa ilk sözcüğü değiştirir. Aşağıdaki örnek, eşleşme yoksa ilk sözcüğü kendisiyle değiştirerek bunu düzeltir.
Dim sentence As New Sentence("A time to see the world is now.")
Dim found = False
sentence.FindNext("A", found) = IIf(found, "A good", sentence.FindNext("B", found))
Console.WriteLine(sentence.GetSentence())
' The example displays the following output:
' A good time to see the world is now.
Daha iyi bir çözüm, başvuru dönüş değerinin başvuru tarafından geçirildiği yardımcı bir yöntem kullanmaktır. Yardımcı yöntemi daha sonra başvuruyla ona geçirilen bağımsız değişkeni değiştirebilir. Aşağıdaki örnek bunu yapar.
Module Example
Public Sub Main()
Dim sentence As New Sentence("A time to see the world is now.")
Dim found = False
Dim returns = RefHelper(sentence.FindNext("A", found), "A good", found)
Console.WriteLine(sentence.GetSentence())
End Sub
Private Function RefHelper(ByRef stringFound As String, replacement As String, success As Boolean) _
As (originalString As String, found As Boolean)
Dim originalString = stringFound
If found Then stringFound = replacement
Return (originalString, found)
End Function
End Module
' The example displays the following output:
' A good time to see the world is now.
Daha fazla bilgi için bkz . Başvuru Dönüş Değerleri.
Visual Basic 14
Bir dizeyi sabit kodlamadan hata iletisinde kullanmak üzere bir türün veya üyenin nitelenmemiş dize adını alabilirsiniz. Bu, yeniden düzenleme sırasında kodunuzun doğru kalmasını sağlar. Bu özellik model-view-controller MVC bağlantılarını bağlamak ve özellik değiştirilmiş olayları tetikleme için de kullanışlıdır.
Dizeleri oluşturmak için dize ilişkilendirme ifadelerini kullanabilirsiniz. İlişkili dize ifadesi, ifadeler içeren bir şablon dizesine benzer. İlişkili dizeyi bağımsız değişkenlere göre anlamak Bileşik Biçimlendirme'den daha kolaydır.
Null koşullu üye erişimi ve dizin oluşturma
Üye erişimi () veya dizin (?.?[]) işlemi gerçekleştirmeden önce null değerini çok hafif bir şekilde test edebilirsiniz. Bu işleçler, özellikle veri yapılarına inmek için null denetimleri işlemek için daha az kod yazmanıza yardımcı olur. Sol işlenen veya nesne başvurusu null ise, işlemler null döndürür.
Çok satırlı dize değişmez değerleri
Dize değişmez değerleri yeni satır dizileri içerebilir. Artık kullanmayla ilgili eski bir çözüme ihtiyacınız yok <xml><![CDATA[...text with newlines...]]></xml>.Value
Açıklamalar
Açıklamaları örtük satır devamlılıklarından sonra, başlatıcı ifadelerinin içine ve LINQ ifade terimleri arasına yerleştirebilirsiniz.
Daha akıllı tam ad çözümlemesi
gibi Threading.Thread.Sleep(1000)bir kod verilip "İş Parçacığı Oluşturma" ad alanını aramak için kullanılan Visual Basic, System.Threading ile System.Windows.Threading arasında belirsiz olduğunu fark edip bir hata bildirin. Visual Basic artık her iki olası ad alanını da birlikte dikkate alır. Tamamlanma listesini gösterirseniz, Visual Studio düzenleyicisi tamamlama listesindeki her iki türden üyeleri listeler.
Yılın ilk tarihi değişmez değerleri
yy-mm-dd biçiminde tarih değişmez değerlerine sahip olabilirsiniz. #2015-03-17 16:10 PM#
Salt okunur arabirim özellikleri
Readwrite özelliğini kullanarak salt okunur arabirim özellikleri uygulayabilirsiniz. Arabirim en düşük işlevselliği garanti eder ve bir uygulama sınıfının özelliğin ayarlanmasına izin vermesini durdurmaz.
Kodunuzun daha fazla okunabilirliği için artık ile IsNotkullanabilirsinizTypeOf.
#Disable Uyarı <Kimliği> ve #Enable Uyarı <Kimliği>
Kaynak dosya içindeki bölgeler için belirli uyarıları devre dışı bırakabilir ve etkinleştirebilirsiniz.
XML belge açıklaması geliştirmeleri
Belge açıklamaları yazarken, akıllı düzenleyici alır ve parametre adlarını doğrulama, düzgün işleme crefs (geneller, işleçler vb.), renklendirme ve yeniden düzenleme desteği alırsınız.
Kısmi modül ve arabirim tanımları
Sınıflara ve yapılara ek olarak, kısmi modülleri ve arabirimleri bildirebilirsiniz.
Yöntem gövdeleri içinde #Region yönergeleri
#Region...#End Bölge sınırlayıcılarını bir dosyanın herhangi bir yerine, işlevlerin içine ve hatta işlev gövdelerine yayılabilir.
Geçersiz kılma tanımları örtük olarak aşırı yüklemedir
Değiştiriciyi Overrides bir tanıma eklerseniz, derleyici örtük olarak ekler Overloads , böylece yaygın durumlarda daha az kod yazabilirsiniz.
Öznitelik bağımsız değişkenlerinde CObj'ye izin verilir
CObj(...) öğesinin öznitelik yapılarında kullanıldığında sabit olmadığı hatasını vermek için kullanılan derleyici.
Farklı arabirimlerden belirsiz yöntemleri bildirme ve kullanma
Daha önce aşağıdaki kod, bildirim IMock göndermenizi veya çağırmanızı GetDetails engelleyen hatalar döndürmüştü (bunlar C# dilinde bildirilmişse):
Interface ICustomer
Sub GetDetails(x As Integer)
End Interface
Interface ITime
Sub GetDetails(x As String)
End Interface
Interface IMock : Inherits ICustomer, ITime
Overloads Sub GetDetails(x As Char)
End Interface
Interface IMock2 : Inherits ICustomer, ITime
End Interface
Şimdi derleyici, çağrılabilecek en uygun GetDetails olanı seçmek için normal aşırı yükleme çözümleme kurallarını kullanır ve örnekte gösterilenler gibi Visual Basic'te arabirim ilişkilerini bildirebilirsiniz.