:: WELCOMEЗаходи :: | :: To my PageНа мой сайт :: |
:: Visual Basic :: | Хакерство | Программирование | Веб | Железо | Разное | Форум | Гостевуха | |||||||||||||||
Для хакера Для программиста Все проги JavaScript, VBscript CSS, SSI, PHP Perl, C, C++, C# Новости от Mail Новости от Rumbler Новости Сайта Картинки и фотки Анекдоты, приколы Разное |
.: Visual Basic. Материалы :.
.: Материалы по Visual Basic :.
.: VB.Net :.Автор: НеизвестенИсточник: Текст скопирован с диска Алекссофт: "С++ последние версии" Программистов, использующих VB в своей работе, можно, с одной стороны, поздравить с тем, что их любимое средство стало более универсальным, функциональным и много еще с чем, но можно и огорчить. Огорчить тем, что VB как таковой прекратил свое существование. VS.Net – это не VB! Нет, сохранились 90 % языковых конструкций языка, да и среда не стала хуже, но старого доброго VB больше нет. Главное, что изменилось – платформа, на которой был создан VS. VB 3-6 планомерно (с некоторыми рывками и застоями, но планомерно) развивался в сторону поддержки COM. И вдруг COM был снят с повестки дня. Вместо него пришел монстр, которому и посвящен весь этот обзор. Нет, COM не умер, вот только приоритеты поменялись. Кстати, а кто-нибудь, знает, как назывался .Net Framework до того, как он стал .Net и CLR? А он назывался COM+! Да, да я ничего не путаю. Во времена, когда Windows 2000 еще была в ранних бета версиях, в тогда еще MSJ вышла одна статья. В ней взахлеб рассказывалось про новый язык программирования под названием COM+, который радикально упростит программирование COM+-объектов под W2k. А причем тут VB? А при том, что тогдашний COM+-язык и есть сегодняшний CLR. И VB.Net ничем не отличается от той радужной картинки, вот только к COM-у все это отношение имеет очень отдаленное. Ну да ладно. Чем же придется пожертвовать программисту, пожелавшему бросить старый добрый VB 6 и пересесть на новый и навороченный VB.Net (он же VB 7)? И что этот программист получит взамен? Первое, чем придется пожертвовать – краткостью и внешней простотой синтаксиса. Связано это с тем, что VB перестал поддерживать свойства по умолчанию. То есть он их поддерживает, но только для свойств-коллекций (параметризованных свойств). Например, если в List.Items(...) свойство Items помечено как свойство по умолчанию, его можно опустить, как и в прошлых реализациях VB: List.Items(...). Но если свойство не является списком, например, TextBox1.Text = ..., то написать TextBox1 = "Некоторый текст" уже не удастся. Так что новый Basic стал длиннее, а краткость – сами знаете, чья сестра. «Зачем это сделано?» – спросите вы. А за тем, чтобы избежать неоднозначностей. CLR пропагандирует типо-безопасность. Так что и VB теперь типа безопасный язык ;). Не будет теперь и dispatch-а, но позднее связывание осталось. Причем во многих случаях работу через dispatch можно заменить грамотным использованием приведения объекта к базовому классу. Доступна и runtime-загрузка, для этого применяются общие для всех CLR-совместимых языков библиотечные функции. Об этом уже упоминалось ранее. Так что все стало даже лучше, но кое-что в своем коде придется поменять. Самое главное - поменялись все базовые библиотеки. Они теперь, как и всё остальное, общие, и о них уже говорилось в разделе «Библиотеки». И вообще, большинство изменений связано с переходом на CLR. Так что если вы пропустили предыдущие разделы, то настоятельно рекомендую вернуться к ним. Далее рассматриваются главные изменения и новые возможности, появившиеся в VB.Net. Оператор «Set»Удален оператор «Set». С одной стороны, это несомненное упрощение языка, но, с другой стороны, вместе с ним удален и явный способ запросить указатель на дополнительный интерфейс, реализуемый объектом. Новая архитектура ориентируется на наследование. Как и в прошлой версии, можно реализовывать любое количество интерфейсов, это делается с помощью ключевого слова Implements. Однако теперь нельзя реализовать только часть методов, нужно описывать все. Для запроса необходимого интерфейса можно воспользоваться новой функцией CType или создать переменную с типом необходимого интерфейса и присвоить объект этой переменной. Ниже приведен пример консольного приложения, демонстрирующего работу с интерфейсами: Interface IItf1 Sub Method1() End Interface Interface IItf2 Sub Method1() End Interface Public Class Class1 Implements IItf1, IItf2 Public Sub Method1() Implements IItf1.Method1 Console.WriteLine("IItf1.Method1") End Sub Public Sub Method2() Implements IItf2.Method1 Console.WriteLine("IItf2.Method1") End Sub End Class Module Module1 Sub Main() Dim obj As New Class1() Console.Write("Вызываем: obj.Method1() => ") obj.Method1() Console.Write("Вызываем: obj.Method2() => ") obj.Method2() Console.Write("Вызываем: CType(obj, IItf1).Method1() => ") CType(obj, IItf1).Method1() Console.Write("Вызываем: ... Itf2 = obj ... => ") Dim Itf2 As IItf2 Itf2 = obj obj.Method1() Console.WriteLine("Нажмите Enter для выхода из программы...") Console.Read() End Sub End Module > Консольный вывод: Вызываем: obj.Method1() => IItf1.Method1 Вызываем: obj.Method2() => IItf2.Method1 Вызываем: CType(obj, IItf1).Method1() => IItf1.Method1 Вызываем: ... Itf2 = obj ... => IItf1.Method1 Нажмите Enter для выхода из программы... Как видно из примера, работать с интерфейсами и классами, их реализующими, на VB довольно просто. Для запроса интерфейса у COM-объекта используются те же принципы. При этом запрашиваемый интерфейс должен быть упомянут в описании COM-объекта, например: coclass AtlTestCls { [default] interface IItf1; interface IItf2; }; Если интерфейс не упомянут, его нельзя запросить от этого объекта напрямую. Однако если предварительно получить указатель на некоторый интерфейс, то с помощью функции CType можно получить указатель на любой другой. Непросто заполучить и указатель на интерфейс, помеченный в COM-объекте как «default» ([default] interface IItf1;). Для этого тоже придется воспользоваться функцией CType. Так что код, прекрасно работающий в VB 6, может спокойно не заработать в новом Basic'е. Причем контроль выполняется во время компиляции. Более того, «умная» среда пытается выполнить эту проверку в момент написания кода, подсвечивая (как в Word) неправильное, с ее точки зрения, присвоение. javascriptpro@narod.ru.: The End :. Арт Студия Савина Данила. Все права защищены - 2004год. Незаконное копирование преследуется по закону. |
ICQ #: 311-944-492 .: Сайт Обновлён :. Сочинения Лучшие Рефераты Энциклопедия Всё для Абитуриента Лучшие Поисковики: Апорт Яндекс Рамблер Все Драйвера: Drv.ru MyWeb All drivers Driverov Driver Zone 3D News Чаты и Форумы: Kamrad Absolute Games Форумы на Роле Для игроков Наша Life Game Guru Разное и полезное: Srez.ru Wmaster.ru Frol.ru Soobcha.ru Mweb.ru Freesoft.ru Soft-obzor.ru Libo.ru Download.ru Alexweb.ru |