Microsoft un başından beri gözbebeği olan Visual Basic in 8.0 sürümünün .Net Framework 2.0 ile birlikte duyuruluan yeniliklerini inceleyeceğiz.. .. Önceden şuda olsaydı ne güzel olurdu dediğimiz bir çok şey eklenmiş durumda&

Belkide ilk programlama dillerinden bir tanesi olan Basic in günümüz versiyonu 8.0, halen Visual Basic 6 ile program yazanlar var. Ancak Microsoft Visual Basic in 7.0, 7.1 ve nihayet 8.0 sürümünü sundu. Bir çok yenilik ile birlikte geldi Visual Basic. Özellikle önceden sıkıntı olan continue deyimi yada operator overloading in olmamasıydı. Ancak bu yeni özelliklerin hepsi Visual Basic 8.0 a eklenmiş durumda&

Visual Basic programcılığına başladığım ilk zamanlar özellikle bana çok saçma gelen bir özelliği yüzünden yapamadığım bir şey vardı. C yada benzeri dillerde özellikle for deyimlerinde değişkeni for un içinde tanımlayabiliyo rduk. Visual Basic de 7.0 özelliğine kadar bu özellik yoktu. 7.1 de bu özellik geldi, halen belki bir çok programcı bilmiyor ancak .Net Framework 1.1 ile birlikte Visual Basic 7.1 de aşağıdaki gibi bir yazım geçerli&

For i As Integer = 0 To 5



Next

Bu yazımızdada bu tarz ince ayarlara ve yeni özelliklere, örnekleri ile değineceğiz.

IsNot Operatörü

Önceki sürümdeki Is operatörü gibidir. Ancak yazarken özelliklede If deyiminde kullanırken Not operatörüne başa yazmak gibi durumlar vakit kaybettirip can sıkıyordu. IsNot operatörü Is operatörünün tersi olarak çalışır ve Is operatörü gibi nesnelerle çalışır.



Public Sub IsForm(ByVal MyForm As Form)



If (MyForm IsNot Nothing) Then

 Kod Satirlari

End If



End Sub

Gördüğünüz gibi yukarıdaki kodda IsForm metodum Form türünden bir değişken alıyor ve If deyiminde bu değişkenin Nothing olmamasına bakıyor.

Using Deyimi

C temelli dillerde bir kod bölümünü ayırmak istediğiniz zaman süslü parantezler kullanırsınız {} böylece o fonksiyonun içinde ayrı bir bölüm olarak kullanılmasını sağlarsınız. Using deyimide bu iş için kullanılabilece k bir yapıdır. Using deyiminde özellikle bir değişkeni kullandıktan sonra Using deyimi bittiğinde değişkeninde ömrünün bitmesidir. Bu yönden özellikle kaynak yönetimi ve programlarınızı n hızlı çalışması için önemlidir.

Public Sub funAddControl(B yVal tb As TextBox)



Using fnt As New Font("Verdana", 10, FontStyle.Bold)

tb.Font = fnt

tb.Text = "Deneme"

End Using



End Sub

Burada gördüğünüz kod bölümünde bir Sub metodum var ve bu metot bir TextBox alıyor, Using deyimi ile birlikte bir Font nesnesi tanımlanıyor ve verilen TextBox ın Font property sine bu tanımlanan Font atanıyor. Ancak değişikliği yaptıktan sonra, benim oluşturduğum fnt değişkenine ihtiyacım yok. Dolayısı ile Using deyiminin faydası işte burada ortaya çıkıyor. Fnt değişkeni End Using deyiminden sonra artık kullanılamaz durumda.



Arraylerde alt sınır tanımlama

Visual Basic 6.0 da arrayleri (dizileri) tanımlarken alt ve üst sınır verebiliyorduk. Yani şöyle bir tanımlama yapabiliyorduk

Dim dizi(4 To as Integer

Yani benim oluşturduğum dizi 5 elemanlı olacak ve dizi 4. elemandan başlayacak. Visual Basic 7.0 ve 7.1 de böyle bir tanımlamaya izin verilmiyordu ancak Visual Basic 8.0 da bu özellik tekrar eklenmiş ancak bir sınırlama ile, alt sınır her zaman sıfır olmak zorunda. Yani biz tanımlama yaparken 0 To 5 şeklinde yapmalıyız. 4 To 6 şeklinde yapamayız. Bu yazım tarzı, özellikle Visual Basic 6.0 yazanların kolay adapte olmaları ve kodun daha okunaklı olmasını sağlar.

Dim dizi(0 To 5, 0 To 4) As Integer

MessageBox.Show (dizi.Length)

Propertylerde Farklı Erişim Seviyeleri

Farkındayım başlık çok açıklayıcı değil ancak Türkçesini bulmakda zor. Aslında anlatılmaya çalışılan şey Property lerin Get ve Set bölümlerine farklı erişim seviyeleri verebilmemiz. Yani Get e yada Set e Protected erişim seviyesi verebilmemiz. Aslında Visual Basic 8.0 a katılan bu özellikte ihtiyacımız olan bir özellikti, özellikle Class lar ile çalışan ve Mimariye dikkat eden kullanıcılar için bir ihtiyaçtı.

Private memLenght As Integer

Public Property proLenght() As Integer

Private Get

Return memLenght

End Get

Set(ByVal value As Integer)

memLenght = value

End Set

End Property

Yukarıdaki koda dikkat ederseniz, Property im Public tanımlı, ancak içerideki Get Private tanımlı. Bu özelliği kullanırken şuna dikkat edin, hem Get hemde Set e aynı anda erişim seviyesi veremesiniz.

İşaretsiz veri tipleri

C# da kullanılan Unsigned (İşaretsiz; yani sadece pozitif sayılar olabilen, negatif sayıları içermeyen) veri tipleri artık Visual Basic de de var. Bildiğiniz gibi önceden Integer olarak tanımladığımız veri tipi 2,147,483 ,648 ile +2,147,483,647 arasında değişiyordu, ben değişkenime hep pozitif sayı atayacak bile olsam Integer veri tipi Negatif sayılarıda tutmak için hazır bekliyordu ve bu benim için yer kaybına (bitsel veri kaybı, bir veri türü eğer işaretli ise ilk bit i işaretini belli eder, değer tutamaz) neden oluyordu. Artık sadece Pozitif sayı tutulacağını biliyorsanız Integeri UInteger (aslında Integer dediğimiz veri tipi Int32 veritipidir. UInteger ise UInt32 veri tipidir.) olarak kullanabilirsin iz. Böylece +4,294,967,295 e kadar veri tutabilirsiniz. Gördüğünüz gibi iki katı fark var pozitif sayılarda böylece 4 Byte ile çok daha büyük bir sayı tutabilirsiniz.

Dim a As UInteger = 6

Dim b As UInt32 = 5

Dim c As UShort = 4

Dim d As UInt16 = 3

Dim f As UInt64 = 2

Dim g As SByte = -1

Öncedende bu tipler vardı ancak kullanamıyorduk (C# da kullanılıyordu) , Artık bu tipler kullanılabilir halde.

SByte gördüğünüz gibi U ile başlamıyor. S Signed (İşaretli) yani hem negatif hemde pozitif olabilir demek (önceden Byte veri tipi vardı, Signed veri tipi ise sadece Pozitif sayılar tutabiliyordu)

Generic Tipler

Bir array e ihtiyacınız var, bunun içinde bir ArrayList tanımladınız, ArrayList e atayacağınız tipler Object olarak atanıyor, örneğin sizin Integer Arrayine ihtiyacınız var ancak ArrayList e Integer ol diyemiyorsunuz dolayısı ile boş yere veri kaybı oluyor, hafıza boş yere doluyor ve Cast (Tip Dönüşümü) ile vakit ve işlemci gücü kaybediliyordu. .Net FrameWork 2.0 ile birlikte Generic tipler geldi ve bazı yapılara Generic lik eklendi.

Generic Class ları normal olarak tanımlıyorsunuz ancak ondan sonra parantezler içinde Of Keyword ü ile tipini belirtiyorsunuz . (ArrayList in Generic tipi yok, List tipi karşılıyor.)

Dim IntArr As New System.Collecti ons.Generic.Lis t(Of Integer)

IntArr.Insert(3 , 1)

daha ayrıntılı bilgi için daha önceden yazmış olduğum Visual Basic de Genericler isimli makaleyi okuyabilirsiniz .

Nullable Tipler

Veri tipleri temelde ikiye ayrılır, Value (Değer) ve Reference (Referans) tipleri olarak. Referans tipleri (her çeşit class larınız) değer olarak Null (Visual Basic de Nothing) değer alabilirler, ancak Değer tipleri Null değer tutamazlar, Örneğin herhangi bir değişken tanımlaması yaptığınızda

Dim a As Integer

Gibi varsayılan olarak a değişkenine 0 değeri atanır. Null değeri tutamaması bir çok durumda dez avantaj olarak karşımıza çıkıyordu, Mesela Veritabanına değer yazdıracakken SqlParameter a değerleri aktarırken zoraki olarak 0 gibi bir değer atmanız gerekir Null değer yollayabilecekk en (Bu konu ile ilgili daha ayrıntılı bilgi için, yazdığım .Net FrameWork 2.0 da Nullable Tipler isimli makaleyi okuyabilirsiniz .)

Dim varYas As Nullable(Of Integer) = Nothing

Gördüğünüz gibi aslında biz tipimizi yine Referans olarak tanımlıyoruz ve aslında Generic yapıları kullanıyoruz.

Operatör Overloading

C# ile yine daha önceden varolan özelik Visual Basic .Net e de eklenmiş durumda. Operatör ezmek genel kavramı Nesneler arasındaki işlemleri özelleştirmek için kullanılırlar. Mesela iki tane Integer veri türünü toplayabiliriz. Ancak ben iki tane Urun classını toplamak istiyorum, neye göre nasıl toplanacağı belli değil. İşte bu yüzden aradaki toplama + operatörünü ezip Urun Classının toplamada nasıl davranacağını belirleyebilirs iniz.

Public Shared Operator +(ByVal u1 As Urun, ByVal u2 As Urun) As Urun



End Operator

Bütün Operatörleri ezip kendi Nesnelerinize göre olan versiyonlarını yazabilirsiniz, Örneğin +, -, *, /, \, Not, Mod vs.

Bu konu ile ilgili Tamer Öz ün C# daki Operator Overloading i yazdığı makale oldukça açıklayıcı, ben Visual Basic .Net için olan şeklini yazana kadar siz bu makaleyi inceleyebilirsi niz

Partial Class

.Net Framework 2.0 ın betalarından beri belkide en çok duyduğumuz özelliği Partial Class lar, yani bir Class ı fiziksel olarak farklı dosyalarda yazabilme yeteneği. Böylece farklı programcı bir Class ın farklı bölümlerini yazabilir ve böylece hız ve tecrübe paylaşımı maksimuma çıkar. Visual Studio 2005 de Partial Class lar bir çok yerde kullanılıyor. Windows Uygulamalarında Visual Studio tarafından oluşturulan kod bölümleri farklı bir fiziksel dosyada, sizin yazdığınız kodlar farklı bir fiziksel dosyada duruyor.

Partial Class Class1

Public Sub Sub1()



End Sub

End Class

Partial Public Class Class1

Public Function Funtion1() As String

Return ""

End Function

End Class

Public Class Class1

Public Property Property1() As Integer

Get



End Get

Set(ByVal value As Integer)



End Set

End Property

End Class

Partial Class özelliği ile bir Class ı istediğiniz kadar bölebilirsiniz. Ancak tek şart var, sadece bir tanımlamanız hariç diğer hepsinde Partial anahtar kelimesini yazmalısınız.

Beğeniler: 0
Favoriler: 0
İzlenmeler: 1246
favori
like
share
erkdag Tarih: 05.04.2006 16:12
bu programa nasıl ulaşabiliriz birde bu konuda yuardımcı olurmusun tşk