Поделиться через


Сравнение ключевых слов в разных языках

В этом разделе приведен список общих задач программирования, которые могут быть сведены к ключевым словам. Дополнительные сведения о задачах, для которых требуются примеры кода, см. в разделе Сравнение концепций программирования в разных языках и примеры кода.

Назначение

Visual Basic

C++

C#

F#

Объявление переменной

Dim

Открытый

Friend

Защищенный

Закрытый

Shared

Static1

declarators (понятие, не ключевое слово)

деклараторы (ключевые слова включают типы, определенные пользователем, и встроенные типы)

Привязки let

Значения

Объявление именованной константы

Const

const

const

readonly

Привязки let

Значения

Создание нового экземпляра класса

Новые возможности

new;

gcnew

new;

new

Создание нового объекта

Новые возможности

CreateObject для COM-объектов

CoCreateInstance() (для COM-объектов)

new; 

new

Присвоение объекта объектной переменной

=

=

=

<-

Функция или метод не возвращает значения

Sub2

void

void

Тип единиц

Перегрузка функции или метода (Visual Basic: перегрузка процедуры или метода)

Overloads

(Для этой цели не требуется зарезервированное слово языка программирования)

(Для этой цели не требуется зарезервированное слово языка программирования)

override

Ссылка на текущий объект

Me3

this

this

Используйте собственный идентификатор, как описано в разделах Методы или Члены

Сделать невиртуальный вызов к виртуальному методу текущего объекта

MyClass

MyClass::Func1(), где MyClass – класс C++ с функцией члена Func1.

Неприменимо

Неприменимо

Извлечение знака из строки

GetChar

*(p + 10) или p[10], где p – char* или wchar_t*

str[10], где str — строка

string

str.Chars(10), где str — строка

Строки

Объявление составного типа данных (структура)

Структура

Класс

Интерфейс

class

структура

union

__interface

структура

class

interface

Классы

Инициализация объектов (конструктор)

Sub New()4

constructors (понятие, не ключевое слово)

Конструкторы или конструкторы стандартного системного типа

Class Constructors

Конструкторы

Непосредственная ликвидация объекта

Неприменимо

~ClassName

Неприменимо

Неприменимо

Метод, вызванный системой сразу же перед сборкой мусора, восстанавливает объект 5

Finalize (в Visual Basic 6.0, Class_Terminate)

Destructors (C++) (понятие, не ключевое слово)

Деструкторы

Finalize

Гарантирует удаление неуправляемых ресурсов после использования

Using

Неприменимо

using

Управление ресурсами

Инициализация переменной в месте объявления

Dim x As Long = 5

Dim c As New Car(FuelTypeEnum.Gas)

// инициализация на значение:

int x=5;

//с соответствующим конструктором:

C c(10);

// инициализация на значение:

int x = 123;

// или использование конструктора по умолчанию:

int x = new int();

let x = 123

Получить адрес функции

AddressOf (Этот оператор возвращает ссылку на функцию в форме экземпляра делегата)

delegate

delegate

Функции

Обратный вызов

Передача адреса одной функции в другую, вызывающую вызвавшую функцию. Пример см. в разделе Практическое руководство. Передача процедур другой процедуре в Visual Basic.

CALLBACK (стандартный тип)

callback (атрибут IDL)

delegate

Неприменимо

Объявить, что объект может быть модифицирован асинхронно

Неприменимо

volatile

volatile

Неприменимо

Принудительное явное объявление переменных

Option Explicit

Не применяется (Все переменные должны быть объявлены перед использованием)

Не применяется (Все переменные должны быть объявлены перед использованием)

Не применяется (Все переменные должны быть объявлены перед использованием)

Разрешение вывода локального типа

Option Infer

Определение типа включается автоматически

Проверить переменный объект, не ссылающийся на объект

obj Is Nothing

pobj == NULL

obj == null

Использовать тип параметра в выражении соответствия

Параметр

Выражения соответствия

Вычислить переменную объекта, не ссылающуюся на объект

Nothing

nullptr

null

Значения NULL

Проверка пустого выражения для базы данных

IsDBNull

Неприменимо

Неприменимо

Неприменимо

Проверка инициализации переменной Variant

Неприменимо

Неприменимо

Неприменимо

Неприменимо

Определить свойство по умолчанию

По умолчанию

property: ключевое слово property относится к управляемому коду

Indexers

Индексированные свойства

Объектно-ориентированное программирование

Назначение

Visual Basic

C++

C#

F#

Ссылка на базовый класс

MyBase

__super

base

base

Объявить интерфейс

Интерфейс

__interface

interface class

interface

interface

Задать интерфейс для реализации

Реализует.

(Просто выводится из интерфейса)

class C1 : public I1

class C1 : I1

интерфейсов,

interface

Объявить класс

Класс

class

Classes and Structs (Managed)

class

type

Объявление модуля

Модуль

static class

static class

модуль

Объявление частичного определения класса или структуры

Partial

Неприменимо

Partial

Прямого эквивалента нет. См. раздел Расширения типов (F#).

Указать, что класс может быть только получен как производный. Экземпляр класса не может быть создан

MustInherit

abstract (Visual C++)6

abstract

Абстрактные классы

Указать, что класс не может быть получен как производный

NotInheritable

sealed

sealed

SealedAttribute

Объявить перечисляемый тип

Enum

enum

enum

type

Объявить константу класса

Const

const

const (применяется к объявлению поля)

По умолчанию значения являются неизменяемыми (константными). См. раздел Значения (F#).

Получить класс из базового класса

Class C1 inherits C2

Class C1 : public Base(Для этой цели не требуется зарезервированное слово языка программирования)

class C1 : C2

class

наследуют от

Переопределение метода или свойства

Overrides

(Для этой цели не требуется зарезервированное слово языка программирования, кроме слова override для компиляции /clr – см. раздел Derived Classes)

override

override

Объявить метод, который должен быть реализован в производном классе

MustOverride

Поместить = 0 в конце объявления (чисто виртуальный метод)

abstract

abstract

Объявить метод, который не может быть переопределен

NotOverridable (методы являются NotOverridable по умолчанию.)

sealed

sealed

Используйте атрибут Sealed

Объявить виртуальный метод или свойство, или аксессор свойства

Overridable

virtual

virtual

abstract, рассматриваемый в разделе Методы.

Скрыть член базового класса в производном классе

Затенение

new (new slot in vtable)

new;

Скрытие виртуального или абстрактного метода не разрешено

Объявить типобезопасную ссылку на метод класса

Delegate

delegate

delegate

myObj.myFunction, где myObj — это объект, а myMethod — это метод, доступный для этого объекта

Указать, что переменная может содержать объект, события которого вы хотите обрабатывать

WithEvents

Неприменимо

(Написать код – нет определенного зарезервированного слова)

Неприменимо

Описать события, для которых будет вызываться процедура события

Handles (Процедуры события все еще могут быть связаны с переменной WithEvents с помощью шаблона именования.)

Неприменимо

event += eventHandler;

Неприменимо

Вычислить однажды выражение объекта для того, чтобы получить доступ к нескольким членам

With... End With

Неприменимо

Неприменимо

Неприменимо

Обработка исключений

Назначение

Visual Basic

C++

C#

F#

Обработка исключений

Try... Catch… Finally... End Try

Throw

Структурная обработка исключений:__try, __except

__finally

Обработка исключений С++:

try, catch, throw

Обработка исключений в среде CLR:

Exception Handling under /clr

try, catch, finally

throw

try

на

finally

Структуры решений

Назначение

Visual Basic

C++

C#

F#

Структура принятия решений (выбор)

Select... Case... End Select

switch, case, default

перейти;

прервать;

коммутатор, регистр

default

перейти;

прервать;

Выражения соответствия

Структура решений (если ... then)

If... Then... Else... End If

ElseIf

if, else

if, else

if...then...else

Циклическая структура (условный)

While... End While

Do...Loop

do, while

continue

do

while

continue

while...do

Циклическая структура (итерация)

For... Next

For Each... Next

for

for

foreach

for...to

for...in

Массивы

Назначение

Visual Basic

C++

C#

F#

Объявление массива

Dim a() As Long

int x[5];

int[] x = new int[5];

let x = [| 1; 2; 3; 4; 5 |]

Массивы

Инициализация массива

Dim a() As Long = {3, 4, 5}

int x[5]= {1,2,3,4,5};

int[] x = new int[5] {1, 2, 3, 4, 5};

let x = [| 1; 2; 3; 4; 5 |]

Массивы

Перераспределение массива

Redim

Неприменимо

Неприменимо

Неприменимо

Область действия класса

Назначение

Visual Basic

C++

C#

F#

Видимый вне проекта или сборки

Открытый

public

public

public

Видимый только в пределах сборки, в которой объявлен

Friend

private

internal

internal

Видимый только в текущем и производных классах

Защищенный

Неприменимо

Защищенный

Неприменимо

Доступ ограничен текущей сборкой или типами, которые являются производными от содержащего класса.

Protected Friend

Type and Member Visibility

protected internal

Уровни доступа

Неприменимо

Видимость только внутри проекта (для вложенных классов, внутри включающего класса)

Закрытый

private

private

private

Область действия члена

Назначение

Visual Basic

C++

C#

F#

Доступны вне класса, проекта и модуля

Открытый

public

public

public

Доступны вне класса, но внутри проекта или пакета

Friend

public private

internal

internal

Доступны только в текущем и производных классах

Защищенный

protected

protected

Неприменимо

Доступны только внутри класса или модуля

Закрытый

private

private

private

Указать, что функция или другой класс имеют доступ к закрытым членам объявляющего класса

Неприменимо

friend

Неприменимо

Неприменимо

Защищен внутри сборки и закрыт для других сборок

Неприменимо

protected private

Неприменимо

Неприменимо

Доступ ограничен текущей сборкой или типами, которые являются производными от содержащего класса.

Protected Friend

Type and Member Visibility

protected internal

Уровни доступа

Неприменимо

Прочее время существования

Назначение

Visual Basic

C++

C#

F#

Сохранить локальные переменные процедуры

Static7

static

static

Неприменимо

Обеспечить общий доступ всеми экземплярами класса

Shared

static

static

static

Прочее

Назначение

Visual Basic

C++

C#

F#

Комментарий кода

'

Rem

//, /* */ для многострочных комментариев

//, /* */ для многострочных комментариев

/// для комментариев XML

//, (* *) для многострочных комментариев

Учет регистра

Нет

Да

Да

Да

Вызов API Windows

Declare <API>

Неприменимо

use Platform Invoke

Используйте вызов неуправляемого кода.

См. раздел Внешние функции (F#).

Объявление и генерация события

Событие

RaiseEvent

Неприменимо

event

События

Примитивы работы с потоками

SyncLock

Неприменимо

lock

lock

Перейти (ветвление)

Goto

перейти;

перейти;

Неприменимо

1 В Visual Basic Static как таковой может использоваться для объявления переменной (например: Static x As Long) только внутри процедуры.

2 В Visual Basic процедуры, объявленные с зарезервированным словом Sub, не могут возвращать значения. Если процедура возвращает значение, ее следует объявлять с зарезервированным словом Function.

3 В Visual Basic Me не разрешается во время компиляции, так что ее можно использовать как возвращаемое значение свойства или метода.

4 В Visual Basic конструкторы для классов, полученные из .NET Framework System.Object, всегда именуются New.

5 Обычно код в этом методе освобождает системные ресурсы, которые не будут освобождаться автоматически сборщиком мусора.

6 В C++ абстрактный класс включает по крайней мере один чисто виртуальный член.

7 Статические локальные переменные методов класса, не объявленных в общее пользование, хранятся в Visual Basic в экземпляре класса, а не в общей единой копии, как в других языках программирования. При использовании Static для объявления переменной значение этой переменной сохраняется, даже если переменная теряет и затем восстанавливает область действия.

См. также

Ссылки

Сравнение концепций программирования в разных языках и примеры кода

Сравнение операторов в разных языках

Сравнение типов данных в разных языках

Сравнение элементов управления и программируемых объектов в разных языках и библиотеках

Другие ресурсы

Языковые эквиваленты