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

Обновлен: Ноябрь 2007

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

Описание

Visual Basic

C++

C#

Язык JScript

Visual FoxPro

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

Оператор Dim (Visual Basic)

Public (Visual Basic)

Friend (Visual Basic)

Protected (Visual Basic)

Private (Visual Basic)

Shared (Visual Basic)

Static (Visual Basic)1

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

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

var

[явное объявление]

PUBLIC

LOCAL

PRIVATE

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

Const

const

const

readonly

const

#DEFINE

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

New

new

gcnew

new

new

Функция NEWOBJECT( )

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

New (Visual Basic)

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

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

new 

новый ActiveXObject()

Функция CREATEOBJECT( )

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

=

=

=

=

=

STORE

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

Sub2

void

void

void

Void (только серверы COM)

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

Overloads

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

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

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

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

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

Me3

this

this

this

this

thisform

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

MyClass

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

нет

нет

нет

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

Функция GetChar

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

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

string4

str[10], где str – string

charAt

substring

substr

SUBSTR( )

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

Structure

class

struct

union

__interface

struct

class

interface

class, interface

не определено

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

Sub New()5

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

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

Class Constructors

Конструктор (понятие, не ключевое слово)6

Событие Init

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

не определено

~ClassName

не определено

не определено

не определено

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

Finalize (в Visual Basic 6.0, Class_Terminate)

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

Destructors

не определено

Событие Destroy

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

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();

var x = 5

var y : car = new car()

LOCAL x

x = 5

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

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

delegate

delegate

Использование имени функции без скобок

не определено

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

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

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

callback (атрибут IDL)

delegate

не определено

не определено

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

не определено

volatile

volatile

не определено

не определено

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

Option Explicit

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

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

быстрый режим (по умолчанию)

_VFP.LanguageOptions NEW 

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

Option Infer

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

obj Is Nothing

pobj == NULL

obj == null

obj == undefined

obj == null

VARTYPE(obj)=="0"

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

Nothing

nullptr

null

null

undefined

.F.

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

IsDbNull

не определено

не определено

x == null

ISNULL( )

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

не определено

не определено

не определено

x == undefined

EMPTY( )

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

Default

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

Indexers

не определено

не определено

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

Описание

Visual Basic

C++

C#

Язык JScript

Visual FoxPro

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

MyBase

__super

base

super

Свойство BaseClass

Свойство ParentClass

DODEFAULT()

Class::member

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

Interface

__interface

interface class

interface

interface

DEFINE CLASS

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

Implements

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

class C1 : public I1

class C1 : I1

Интерфейсы

IMPLEMENTS

IMPLEMENTS NEW 

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

Class

class

Classes and Structs (Managed)

class

class

DEFINE CLASS MyClass AS <ParentClass>

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

Module

static class

static class

нет

нет

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

Partial

нет

Partial

нет

нет

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

MustInherit

abstract (Visual C++)8

abstract

abstract

не определено

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

NotInheritable

sealed

sealed

final

нет

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

Enum

enum

enum

enum

нет

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

Const

const

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

const

#DEFINE

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

Class C1 inherits C2

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

class C1 : C2

class

Class c1 extends c2

DEFINE CLASS MyClass AS ParentClass

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

Overrides

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

override

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

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

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

MustOverride

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

abstract

abstract

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

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

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

sealed

sealed

final

не определено

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

Overridable

virtual

virtual

(Методы виртуальны по умолчанию)

не определено

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

Shadowing

new (new slot in vtable)

new (справочник по C#)

new Modifier

не определено

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

Delegate

delegate

delegate

Использование имени функции без скобок

не определено

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

WithEvents

не определено

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

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

EVENTHANDLER( ) NEW 

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

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

не определено

event += eventHandler;

не определено

BINDEVENTS( )

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

With... End With

нет

Оператор using (Справочник по C#)

с 9

WITH ... ENDWITH

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

Назначение

Visual Basic

C++

C#

Язык JScript

Visual FoxPro

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

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

Throw

__try, __except

__finally

try, catch, finally

throw

try

catch

finally

throw

TRY

   [ tryCommands ]

[ CATCH [ To VarName ] [ WHEN IExpression ] ]

   [ catchCommands ] ]

[ THROW [ eUserExpression ] ]

[ EXIT ]

[ FINALLY

   [ finallyCommands ] ]

ENDTRY

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

не определено

try, catch, throw

не определено

не определено

не определено

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

Описание

Visual Basic

C++

C#

Язык JScript

Visual FoxPro

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

Select... Case... End Select

switch, case, default

goto

break

switch

case

default

goto

break

switch

case

break

CASE

ICASE

Структура принятия решений (if ... then)

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

ElseIf

if, else

if, else

if

else

IF ... ENDIF

IIF( )

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

While... End While

Do...Loop

do, while

continue

do

while

continue

do, while

break, continue

DO, WHILE (предложения)

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

For... Next

For Each... Next

for

for

foreach

for (x=0;x<10;x++){...}

for (prop in obj) { print (obj[prop]);}

FOR (предложения)

FOR ... ENDFOR

Continue

NEXT

FOR EACH (предложения) ,FOR ... ENDFOR, Continue, Next

Массивы

Описание

Visual Basic

C++

C#

Язык JScript

Visual FoxPro

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

Dim a() As Long

int x[5];

int[] x = new int[5];

var x : int[]

var arr = Array()

DIMENSION

DECLARE

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

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};

var x : int[] = [1, 2, 3, 4, 5]

var arr = new Array(1, 2, 3, 4, 5)]

x[1] = 1

x[2] = 2

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

Redim

не определено

не определено

arr.length=newSize (только для массивов JScript)10

DIMENSION

DECLARE

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

Описание

Visual Basic

C++

C#

Язык JScript

Visual FoxPro

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

Public

public

public

public

нет

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

Friend

private

internal

internal

нет

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

Protected

нет

Protected

нет

нет

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

Protected Friend

Type and Member Visibility

protected internal

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

нет

нет

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

Private

private

private

private

не определено

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

Описание

Visual Basic

C++

C#

Язык JScript

Visual FoxPro

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

Public

public

public

public

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

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

Friend

public private:

internal

internal

не определено

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

Protected

protected

protected

protected

PROTECTED

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

Private

private

private

private

HIDDEN

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

не определено

friend (не разрешено в C++)

friend

не определено

не определено

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

не определено

protected private

не определено

не определено

не определено

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

Protected Friend

Type and Member Visibility

protected internal

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

нет

нет

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

Назначение

Visual Basic

C++

C#

Язык JScript

Visual FoxPro

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

Static11

static

static (Справочник по C#)

не определено

не определено

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

Shared

static

static

static

не определено

Прочее

Описание

Visual Basic

C++

C#

Язык JScript

Visual FoxPro

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

'

Rem

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

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

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

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

*

&&

ПРИМЕЧАНИЕ

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

Нет

Да

Да

Да

Нет

Вызов API Windows

Declare <API>

не определено

use Platform Invoke

не определено

DECLARE - DLL

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

Event

RaiseEvent

не определено

event

не определено

Функция RAISEEVENT( )

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

SyncLock

не определено

lock

не определено

не определено

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

Goto

goto

goto

не определено

не определено

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

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

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

4 В JScript функция substr все еще поддерживается, но больше не является предпочтительным методом доступа к знакам в строке. Более эффективным способом доступа к знакам из конкретного положения в строке является использование квадратных скобок. Например, для доступа к десятому знаку в строке str используйте str[10].

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

6 Перегрузка конструкторов в Jscript не разрешена.

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

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

9 Отметим, что в JScript здесь нет точки перед именем, как это было бы в Visual Basic. Эта особенность очень легко может привести к путанице, поскольку переменные по ошибке легко принять за свойства и наоборот. Отметим также, что оператор with дает медленно работающий код.

10 В JScript перераспределение массива не производится, и массив не может "расти". Массивы JScript (объявленные как тип Array) всегда разряженные и динамические. Массивы (объявленные как System.Array или как type[]) не являются динамическими.

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

См. также

Ссылки

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

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

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

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

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

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

Visual J#