|
Программирование >> C# visual basicc#
C++/CLI int i = 0; while (i < 3) { Console::WriteLine(i++); i = 0; do { Console::WriteLine(i++); } while (i < 3); Visual Basic Dim num as Integer = 0 Do While (num < 3) Console.WriteLine(num) num += 1 Loop num = 0 Console.WriteLine(num) num += 1 Loop While (num < 3) Оператор foreach Оператор foreach использует интерфейс IEnumerable. Этот оператор отсутствует в ANSI C++, но имеется в расширении ANSI C++/CLI. В отличие от foreach из C#, в C++/CLI пробел между for и each не ставится. Оператор For Each в Visual Basic не позволяет объявлять тип итератора внутри цикла; его тип должен быть объявлен заранее. C# int[] arr = {1, 2, 3}; foreach (int i in arr) Console.WriteLine(i); C++/CLI array<int> arr = {1, 2, 3}; for each (int i in arr) Console::WriteLine(i); Visual Basic Dim arr() As Integer = New Integer() {1, 2, 3} Dim num As Integer For Each num In arr Console.WriteLine(num) Next В то время как foreach облегчает итерацию по коллекциям, C# поддерживает создание перечислителей посредством оператора yield. В Visual Basic и C++/CLI оператор yield не доступен. Вместо него эти языки требуют реализации интерфейсов IEnumerable и lEnumerator вручную. Оператор yield объясняется в главе 5. Обработка исключений Обработка исключений обсуждалась в главе 14. Это средство очень похоже во всех трех языках. Везде используется конструкция try/catch/finally для обработки исключений, а ключевое слово throw - для генерации исключения. C# public void Method(Object o) if (o == null) throw new ArgumentException( Error ); public void Foo() try { Method(null); catch (ArgumentException ex) { } catch (Exception ex) { } finally { } C++/CLI public: void Method(Object o) if (o == nullptr) throw gcnew ArgumentException( Error ); void Foo() try { Method(nullptr); catch (ArgumentException ex) { } catch (Exception ex) { } finally { } Visual Basic Public Sub Method(ByVal o As Object) If o = Nothing Then Throw New ArgumentException( Error ) End Sub Public Sub Foo() Try Method(Nothing) Catch ex As ArgumentException Catch ex As Exception Finally End Try End Sub Наследование Языки, поддерживающие .NET, предоставляют множество ключевых слов, касающихся определения полиморфного поведения, переопределения или сокрытия методов и модификаторов доступа, предназначенных для разрешения или запрета доступа к членам. Для C# эта функциональность обсуждалось в главе 4, посвященной наследованию. Вся эта функциональность в C#, C++/CLI и Visual Basic очень похожа, однако ключевые слова отличаются. Модификаторы доступа Модификаторы доступа в C++/CLI и Visual Basic очень похожи на те, что имеются в C#, но с некоторыми заметными отличиями (табл. Б.3). В Visual Basic используется модификатор доступа Friend вместо internal для доступа к типам из одной и той же сборки. В C++/CLI имеется еще один модификатор: protected private. Модификатор internal protected позволяет получить доступ к членам класса из той же сборки, а также из других сборок, если тип наследует данный базовый тип. В C# и Visual Basic нет возможности открыть доступ только типам-наследникам из той же сборки. А в C++/CLI такое возможно, благодаря protected private. Ключевое слово private здесь говорит о том, что доступ извне данной сборки закрыт, но в пределах той же сборки protected-доступ возможен. Порядок слов - т.е. пишете вы protected private или private protected - не имеет значения. Модификатор доступа, позволяющий большее, всегда располагается внутри сборки, а модификатор, позволяющий меньшее - вне ее. Таблица Б.3. Модификаторы доступа
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |