01
08
VB 6 ve VB.NET Arasında En İyi Beş Değişiklik
Visual Basic 1.0, programlama boyunca büyük bir depremdi. VB1'den önce, Windows uygulamaları oluşturmak için C, C ++ veya başka bir korkunç geliştirme ortamı kullanmanız gerekiyordu. Programcılar tam anlamıyla, seçici, ayrıntılı, hata ayıklaması zor kodlarla ekranlara pencereler çizerek haftalar geçirdiler. (Bir formu araç çubuğundan birkaç saniye içinde sürükleyerek de yapabilirsiniz.) VB1 bir hit oldu ve programcıların cilvesi hemen kullanmaya başladı.
Ancak sihri gerçekleştirmek için Microsoft bazı büyük mimari ödünler verdi. Özellikle, VB1 formları ve kontrolleri oluşturduğundan, programcının bunu yapan koda erişmesine izin vermediler. VB'nin her şeyi yaratmasına izin verdiniz ya da C ++ kullandınız.
VB 2 ila 6 aynı mimariyi korumuştur. Microsoft, programcılara çok daha fazla kontrol sağlayan çok akıllı güncellemeler yaptı, ancak son analizde programcılar kodlarını VB koduyla entegre edemediler. Kara bir kutuydu ve iyi OOP yolunda da değildi. Bunu söylemenin bir başka yolu, programcının dahili VB "nesnelerine" erişememesidir ve bunu söylemenin başka bir yolu da VB6'nın hala tamamen "nesne yönelimli" olmamasıydı.
02
08
VB 6 - Teknoloji Eğrisinin Arkasına Düşmek
Bu arada, Java, Python ve WERE nesnesinin yöneldiği diğer birçok programlama dili ortaya çıkmaya başladı. Visual Basic geçiyordu - büyük zaman! Bu, Microsoft'un hoş görmediği bir durumdur... ve sorunu bir kez ve herkes için çözmeye karar verdiler. Çözüm .NET.
Ancak .NET'in yapması gereken şeyleri yapmak için Microsoft, "uyumluluğu" kırmaları gerektiğine karar verdi. Yani, Visual Basic programları (çok küçük istisnalar dışında) VB1'den VB6'ya kadar "yukarı doğru uyumlu" idi. VB'nin ilk sürümünde yazılan bir program hala bir sonraki sürümde derlenip çalışır. Ancak VB.NET ile Microsoft, dili tamamen OOP haline getiremediklerini ve uyumlu bir şekilde yukarı kaldıramadıklarını keşfetti.
Bu temel kararı verdikten sonra, sel kapıları on yıllık birikmiş "istek listesi" değişikliklerinde açıldı ve TÜMÜ yeni VB.NET'e girdi. Britanya'da dedikleri gibi, "Bir kuruş için, bir pound için."
Daha fazla gecikmeden, işte VB6'dan VB.NET'e yapılan ilk beş değişiklikin kişisel listesi ters sırada.
Wellllll... sadece bir gecikme daha. Bir dizinin Dim myArray olarak bildirildiği VB6'dan değiştiğimizden (5) vardır 6 elemanları, biz altı tane var. Sadece uygun ...
(Davul silindiri lütfen ...)
03
08
Ödül (5) - C benzeri Sözdizimi Değişiklikleri
"Ödül (5)", 6. Sıra ödül C grubu seçimine gidiyor: C benzeri Sözdizimi Değişiklikleri!
Şimdi a = a + 1 yerine a + = 1 kodlayabilir, ÜÇ BÜTÜN ANAHTAR KELİMEYİ kaydedebilirsiniz!
Dünyanın Programcıları, Sevinin! VB, C seviyesine yükseltildi ve VB öğrenmeye çalışan yepyeni bir nesil, C ++ öğrencileriyle yüzleşen kitlesel karışıklığa biraz daha yaklaşacak.
Fakat bekle! Fazlası var!
VB.NET şimdi değerli nano-saniye işlemci zaman kazanmak için yıllardır C ++ kodu içine ince hatalar tanıttı "kısa devre mantığı" sahiptir. Kısa devre mantığı, gerekirse yalnızca mantıksal bir ifadede birden çok koşulu değerlendirir. Örneğin:
Dim R As Boolean
R = İşlev1 () ve İşlev2 ()
VB6'da her iki fonksiyon da ihtiyaç duyup duymadıkları değerlendirilir. VB.NET ile, İşlev1 () yanlışsa, "R" Doğru olamayacağından İşlev2 () yok sayılır. Ancak, eğer global bir değişken Function2 () 'de değiştirilirse - şans eseri (C ++ programcıları " Kötü programlama ".) Kodum neden çevrildiği zaman yanlış cevap veriyor VB.NET? Bu olabilir!
İçin Deneyindaha zor, VB.NET Tutmak biraz şans ve En sonunda "istisnai" hata işleme ile tanışın.
VB6, GoTo: "On Error GoTo" adlı son dağıtıma sahipti. Hatta C + + tarzı "Try-Catch-Sonunda" yapılandırılmış istisna işleme sadece yarım büyük bir gelişme değil, büyük bir gelişme olduğunu itiraf etmeliyim.
Ne, "On Error GoTo" hala VB.NET diyorsun? Wellll... Bunun hakkında fazla konuşmamaya çalışıyoruz.
04
08
5. Sıra - Çeşitli Komuta Değişiklikleri
5. sıra seçim bir grup ödülüdür: Çeşitli Komut Değişiklikleri! Bu ödülü paylaşmak zorundalar ve bir milyar dolar var. Microsoft on yıldır tasarruf ediyor ve gerçekten gevşiyorlar.
VB.NET artık değişkenlerin bellek adresini alan VarPtr, ObjPtr ve StrPtr işlevlerini desteklememektedir. Ve bir kullanıcı tanımlı türü diğerine dönüştürmek için kullanılan VB6 LSet'i desteklemez. (Tamamen farklı bir şey yapan VB6 LSet ile karıştırılmamalıdır - aşağıya bakın.)
Ayrıca Let, Is Eksik, DefBool, DefByte, DefLng, DefCur, DefSng, DefDbl, DefDec, DefDate, DefStr, DefObj, DefVar ve (kişisel favorim!) GoSub'a düşkün teklifler sunuyoruz.
Circle, GDI + DrawEllipse biçimine dönüştü. Aynı şey Line to DrawLine için de geçerlidir. Hesaplamada şimdi Atn yerine Atan var, Sign Sgn için giriyor ve Sqrt Sqr yerine büyük oyun için uygun.
Dize işlemede, bir Microsoft uyumluluğuna başvurursanız da kullanılabilir olmalarına rağmen ad alanında, VB6'nın LSet'i için PadRight'ımız var (yine VB6'nın LSet'inden tamamen farklı) ve PadLeft RSet için. ("+ =" İle kaydettiğimiz üç tuşa basıyoruz!)
Ve elbette, şimdi OOP olduğumuz için, VB.NET'te Mülkiyet Kümesi, Özellik İzin Ver ve Özellik Al karşılanmadığında endişelenmeyin!
Sonunda, Debug. Yazdırma ya Hata Ayıklama olur. Yazma veya Hata Ayıklama. Yazı çizgisi. Sadece nerds her şeyi basar.
Bu, VB.NET'teki tüm YENİ komutlara bile dokunmuyor, ancak bu saçmalığı bir yerde durdurmamız gerekiyor.
05
08
4. Sıra - Prosedür Çağrılarındaki Değişiklikler
İçinde 4. sıra, sahibiz Prosedür Çağrılarındaki Değişiklikler!
Bu "iyilik, saflık ve sağlıklı erdem" ödülüdür ve "artık özensiz kod" grubu tarafından yapılan çok zor kampanyaları temsil eder.
VB6'da, bir yordam parametre değişkeni gerçek bir türse, kodlamadığınız sürece ByRef olur ByVal açıkça, ancak ByRef veya ByVal kodlanmamışsa ve gerçek bir değişken değilse ByVal... Anladım?
VB.NET'te ByRef kodlanmadıkça ByVal olur.
Bu arada ByVal VB.NET varsayılanı, prosedürlerdeki parametre değişkenlerindeki değişikliklerin yanlışlıkla iyi OOP programlamanın önemli bir parçası olan çağrı koduna geri yayılmasını da önler.
Microsoft ayrıca VB.NET yordam çağrıları parantez gereksinimlerini bir değişiklik ile "aşırı".
VB6'da, işlev çağrıları yaparken bağımsız değişkenler etrafında parantez gerekir, ancak Call deyimini kullanılmadığında bir altyordam çağrılırken değil, Call deyimi kullanıldığında gerekir.
VB.NET'te, boş olmayan bir bağımsız değişken listesinde parantez her zaman gereklidir.
06
08
Üçüncülük - Diziler 1 tabanlı yerine 0 tabanlıdır
Bronz Ödül - 3. sıra, gider Diziler 1 tabanlı yerine 0 tabanlıdır!
Bu sadece bir sözdizimi değişikliği, ancak bu değişiklik "madalya podyum" statüsü kazanıyor çünkü "büyük olasılıkla program mantığınızı bozuyor". Unutmayın, 3.lük DIR-DİR Listemizde "Ödül (2)". VB6 programınızda sayaçlarınız ve dizileriniz varsa (ve kaç taneniz yoksa), bu sizi SINIRLAYACAKTIR.
On yıldır insanlar, "Bu şekilde yaptıkları zaman Microsoft sigara içiyordu?" Ve on yıl boyunca, programcılar biraz yer kaplayan ve alıştırmayan bir myArray (0) öğesi olduğu evrensel olarak göz ardı edildi. herhangi bir şey... Bunu kullanan programcılar dışında ve programları baktı, yani, sadece "garip".
I = 1 ila 5 için
MyArray (I - 1) = Her neyse
Sonraki
Demek istediğim, GERÇEKTEN Mİ! ...
07
08
İkincilik - Varyant Veri Türü
Gümüş Madalya 2. sıra VB6'nın geçişi ile programlama bitine bırakılan eski bir arkadaşı onurlandırıyor! Bundan başka hiçbir şeyden bahsetmiyorum, Varyant Veri Türü.
Muhtemelen Visual Basic "notNet" in başka hiçbir özelliği "hızlı, ucuz ve gevşek" felsefesini daha iyi temsil etmez. Bu görüntü VB'yi VB.NET'in tanıtımına kadar taşıdı. Microsoft tarafından Visual Basic 3.0'ın girişini hatırlamak için yeterince yaşlıyım: "Oh Vay canına! Buraya bak! Yeni, geliştirilmiş Varyant veri türüyle değişkenleri bildirmeniz veya bildirmeniz gerekmez. Onları düşünüp kodlayabilirsiniz. "
Microsoft bu konuda melodilerini oldukça hızlı değiştirdi ve değişkenleri bir "" Varyantları kullanamıyorsanız, neden? " var mı? "
Ancak biz veri türleri konusunda, Variant'ı ıslak çimentoya bırakmanın yanı sıra birçok veri tipinin değiştiğinden bahsetmeliyim. Yeni bir Char veri türü ve 64 bit uzun bir veri türü var. Ondalık çok farklı. Kısa ve Tamsayı artık aynı uzunlukta değil.
Ve yeni bir "Nesne" veri türü var herhangi bir şey. Birisinin "Varyant'ın Oğlu"?
08
08
1. Sıra - VB.NET sonunda tamamen Nesneye Yöneliktir
En sonunda! Altın Madalya, 1.lik, verebileceğim en yüksek ödül ...
TA DAH!
VB.NET sonunda tamamen Nesneye Dayalı!
Şimdi sahile gittiğinizde, C ++ programcıları yüzünüzde kum atmayacak ve çalmayacak (kız arkadaş / erkek arkadaş - birini seç). Ve yapabilirsin yine hangi başlık dosyalarının ekleneceğini anlamaya çalışırken tam bir Defteri Kebir Deneme Bakiyesini kodlayın.
İlk kez, çipe ihtiyacınız olduğu kadar yakın kod yazabilir ve kalbinizin istediği tüm sistem içlerine erişebilirsiniz. olmadan Bu kötü Win32 API çağrılarına başvurmak zorunda. Kalıtım, aşırı yükleme, eşzamansız çoklu kullanım, çöp toplama ve her şey bir nesnedir. Hayat daha iyi olabilir mi?
Birisi C ++ birden fazla miras olduğunu söyledi ve .NET hala yok duydum?
Heretik yak!