01
из 08
Пять главных изменений между VB 6 и VB.NET

Visual Basic 1.0 был сильным землетрясением на протяжении всего программирования. До VB1 вам приходилось использовать C, C ++ или другую ужасную среду разработки для создания приложений Windows. Программисты буквально потратили недели, просто рисуя окна на экранах с требовательным, детализированным, трудным для отладки кодом. (То же самое можно сделать, перетащив форму с панели инструментов за несколько секунд.) VB1 стал хитом, и его начали использовать десятки миллиардов программистов.
Но чтобы волшебство произошло, Microsoft сделала несколько серьезных компромиссов в архитектуре. В частности, поскольку VB1 создавал формы и элементы управления, они не позволяли программисту получить доступ к коду, который это сделал. Вы либо позволяете VB создавать все, либо используете C ++.
VB 2-6 поддерживали ту же архитектуру. Microsoft сделала несколько очень умных обновлений, которые дали программистам намного больше контроля, но в конечном счете программисты все еще не могли интегрировать свой код с кодом VB. Это был черный ящик - и не в ООП. Другой способ сказать, что у программиста не было доступа к внутренним «объектам» VB, и другой способ сказать, что VB6 все еще не был полностью «объектно-ориентированным».
02
из 08
VB 6 - отставание от технологической кривой
Тем временем начали появляться Java, Python и множество других языков программирования, ориентированных на объекты WERE. Visual Basic потерял сознание - большое время! Эту ситуацию Microsoft не терпит... и они решили решить проблему раз и навсегда. Решение .NET.
Но чтобы сделать то, что нужно было .NET, Microsoft решила, что им нужно «нарушить совместимость». То есть программы на Visual Basic были (с очень небольшими исключениями) "совместимыми вверх" от VB1 до VB6. Программа, написанная в этой первой версии VB, все равно будет компилироваться и запускаться в следующей версии. Но с VB.NET Microsoft обнаружила, что они просто не могут сделать язык полностью ООП и поддерживать восходящую совместимость.
Как только они приняли это фундаментальное решение, шлюзы открылись после десяти лет накопленных изменений в «списке пожеланий», и ВСЕ они вошли в новый VB.NET. Как говорят в Британии: «За копейки, за фунт».
Без дальнейших задержек, вот мой личный список пяти лучших изменений с VB6 на VB.NET в обратном порядке.
Wellllll... только еще одна задержка. Так как мы переходим от VB6, где массив объявлен как Dim myArray (5) имеет 6 элементы, у нас есть шесть из них. Это только уместно ...
(Барабанная дробь, пожалуйста ...)
03
из 08
Награда (5) - С-синтаксические изменения
«Награда (5)», наша 6 место Награда идет на выбор поклонницы C: С-синтаксические изменения!
Теперь вы можете кодировать + = 1 вместо a = a + 1, сохраняя три целых клавиши!
Программисты всего мира, радуйтесь! VB был поднят до уровня C, и целое новое поколение, пытающееся изучать VB, станет немного ближе к массовой путанице, с которой сталкиваются студенты C ++.
Но ждать! Есть еще кое-что!
VB.NET теперь имеет «логику короткого замыкания», которая годами вносила незначительные ошибки в код C ++, чтобы сэкономить драгоценные наносекунды процессорного времени. Логика короткого замыкания оценивает несколько условий в логическом выражении только при необходимости. Например:
Dim R As Boolean
R = Function1 () И Function2 ()
В VB6 обе функции оцениваются, нуждаются ли они в этом или нет. В VB.NET, если Function1 () - false, Function2 () игнорируется, поскольку «R» не может быть True. Но что, если глобальная переменная изменяется в Function2 () - просто случайно (программисты на C ++ сказали бы: « плохое программирование ".) Почему мой код иногда дает неправильный ответ, когда он переводится в VB.NET? Это может быть это!
За ПытатьсяСложнее, VB.NET будет Поймать немного удачи и в заключение получить признание за «исключительную» обработку ошибок.
VB6 имел последнее удержание GoTo: «При ошибке GoTo». Даже я должен признать, что обработка структурированных исключений в стиле C ++ «Try-Catch-Наконец» - это значительное улучшение, а не только половина.
Что, вы говорите "При ошибке GoTo" все еще в VB.NET? Wellll... Мы стараемся не говорить об этом слишком много.
04
из 08
5-е место - Разные изменения команды
5 место отбор - групповая награда: Различные изменения команды! Они должны разделить эту награду, а их миллиард. Microsoft копила в течение десяти лет, и они действительно потерпели неудачу.
VB.NET больше не поддерживает функции VarPtr, ObjPtr и StrPtr, которые извлекают адрес памяти из переменных. И он не поддерживает VB6 LSet, который использовался для преобразования одного пользовательского типа в другой. (Не путать с VB6 LSet, который делает что-то совершенно другое - см. Ниже.)
Кроме того, мы ставим любящие предложения на Let, Missing, DefBool, DefByte, DefLng, DefCur, DefSng, DefDbl, DefDec, DefDate, DefStr, DefObj, DefVar и (мой личный фаворит!) GoSub.
Круг превратился в GDI + DrawEllipse. То же самое относится и к Line to DrawLine. В расчете у нас теперь Atan вместо Atn, Sign принимает Sgn, а Sqrt подходит для большой игры вместо Sqr.
В обработке строк, даже если они все еще доступны, если вы ссылаетесь на совместимость Microsoft Пространство имен, у нас есть PadRight для LSet в VB6 (опять же, совершенно иное, чем LSet в VB6, конечно) и PadLeft для RSet. (Там идут три нажатия клавиш, которые мы сохранили с помощью «+ =»!)
И, конечно же, поскольку сейчас мы ООП, не волнуйтесь, если в VB.NET не собраны наборы свойств, свойства Let и свойства Get, вы держите пари!
Наконец, отладка. Печать становится либо отладкой. Написать или отладить. WriteLine. В любом случае, только ботаны все печатают.
Это даже не касается всех НОВЫХ команд в VB.NET, но мы должны где-то остановить эту ерунду.
05
из 08
4-е место - изменения в вызовах процедур
В 4 место, у нас есть Изменения в процедурах вызовов!
Это награда «доброта, чистота и добродетель» и представляет собой серьезную кампанию, проводимую фракцией «нет больше неаккуратного кода».
В VB6, если переменная параметра процедуры является внутренним типом, то это ByRef, если вы не закодировали ее ByVal явно, но если он не закодирован ByRef или ByVal и не является встроенной переменной, тогда он ByVal... Понял?
В VB.NET это ByVal, если он не закодирован ByRef.
Кстати, по умолчанию ByVal VB.NET также предотвращает непреднамеренное распространение изменений переменных параметров в процедурах обратно в вызывающий код - ключевая часть хорошего программирования ООП.
Microsoft также «перегружает» VB.NET изменением требований к скобкам в вызовах процедур.
В VB6 круглые скобки требуются вокруг аргументов при выполнении вызовов функций, но не при вызове подпрограммы, когда не используется оператор Call, но они требуются, когда используется оператор Call.
В VB.NET круглые скобки всегда требуются вокруг непустого списка аргументов.
06
из 08
3-е место - массивы 0 основаны вместо 1 основаны
Бронзовая награда - 3 место, идет к Массивы основаны на 0, а не на 1!
Это всего лишь одно изменение синтаксиса, но это изменение получает статус «медального подиума», потому что за него проголосовали, «скорее всего, испортит логику вашей программы». Помни, 3 место ЯВЛЯЕТСЯ «Награда (2)» в нашем списке. Если у вас есть счетчики и массивы в вашей программе VB6 (а сколько их нет), то это БУДЕТ БЕСПЛАТНО.
В течение десяти лет люди спрашивали: «Что Microsoft курила, когда они делали это таким образом?» И в течение десяти лет программисты своего рода повсеместно игнорировал тот факт, что был элемент myArray (0), который просто занимал место и не использовался для что-нибудь... За исключением тех программистов, которые ДЕЙСТВИТЕЛЬНО использовали это, и их программы выглядели, я имею в виду, просто "странно".
Для I = 1 до 5
MyArray (I - 1) = что угодно
следующий
Я имею в виду, ДЕЙСТВИТЕЛЬНО! ...
07
из 08
2-е место - тип данных Variant
Серебряная медаль 2 место идет в честь старого друга, которого бросили в ведро программирования с прохождением VB6! Я не говорю ни о ком, кроме Вариант Тип данных.
Вероятно, никакая другая особенность Visual Basic «notNet» лучше не представляет философию «быстро, дешево и свободно». Это изображение преследовало VB вплоть до появления VB.NET. Я достаточно взрослый, чтобы помнить введение Microsoft Visual Basic 3.0: «Ого! Lookee здесь! С новым улучшенным типом данных Variant вам не нужно объявлять переменные или ничего. Вы можете просто придумать их и закодировать их ".
Microsoft довольно быстро изменила их настройку и порекомендовала объявить переменные с конкретный тип данных почти сразу, и многие из нас задаются вопросом: «Если вы не можете использовать варианты, почему есть они?
Но пока мы обсуждаем типы данных, я должен отметить, что многие типы данных изменились в дополнение к добавлению Variant во влажный цемент. Существует новый тип данных Char и тип данных Long, который составляет 64 бита. Десятичный - это совсем другое. Short и Integer больше не имеют одинаковую длину.
И есть новый тип данных «Объект», который может быть что-нибудь. Слышал ли я, что кто-то сказал:Сын Варианта"?
08
из 08
1-е место - VB.NET окончательно полностью объектно-ориентирован
В заключение! Золотая медаль, 1-е место, высшая награда, которую я могу вручить ...
ТА ДА!
VB.NET наконец-то полностью объектно-ориентированный!
Теперь, когда вы идете на пляж, программисты на C ++ не будут бить вас по лицу и красть вашу (девушку / парня - выберите одну). И вы можете Все еще составьте полный пробный баланс Главной книги, пока они пытаются выяснить, какие заголовочные файлы включить.
Впервые вы можете кодировать как можно ближе к микросхеме и получать доступ ко всем внутренним компонентам системы, которые вам нужны. без приходится прибегать к этим неприятным вызовам Win32 API. У вас есть наследование, перегрузка функций, асинхронная многопоточность, сборка мусора и все это объект. Может ли жизнь стать лучше?
Слышал ли я, что кто-то говорит, что C ++ имеет множественное наследование, а .NET все еще нет?
Сожги еретика!