Программирование >>  C# visual basicc# 

1 ... 3 4 5 [ 6 ] 7 8 9 10


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. Модификаторы доступа

C++/CLI

Visual Basic

Public

public

Public

protected

protected

Protected

private

private

Private

internal

internal

Friend

internal protected

internal protected

Protected Friend

Не возможен

protected private

Не возможен

Ключевые слова

Ключевые слова, важные для наследования, перечислены в табл. Б.4.

Таблица Б.4. Ключевые слова, связанные с наследованием

C# C++/CLI

Visual Basic

Функциональность

Implements

Реализует интерфейс.

Inherits

Наследует базовый класс.

virtual virtual

Overridable

Объявляет метод для поддержки полиморфизма.

overrides override

Overrides

Переопределяет виртуальный метод.



1 ... 3 4 5 [ 6 ] 7 8 9 10

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика