Сравнение зарезервированных слов в разных языках
Обновлен: Ноябрь 2007
В этом разделе приведен список общих задач программирования, которые могут быть сведены к ключевым словам. Дополнительные сведения о задачах, для которых требуются примеры кода, см. в разделе Сравнение концепций программирования в разных языках и примеры кода.
Описание |
Visual Basic |
C++ |
C# |
Язык JScript |
Visual FoxPro |
---|---|---|---|---|---|
Объявление переменной |
declarators (понятие, не ключевое слово) |
деклараторы (ключевые слова включают типы, определенные пользователем, и встроенные типы) |
var |
[явное объявление] PUBLIC LOCAL PRIVATE |
|
Объявление именованной константы |
const |
#DEFINE |
|||
Создание нового экземпляра класса |
new |
Функция NEWOBJECT( ) |
|||
Создание нового объекта |
CreateObject() для COM-объектов |
CoCreateInstance() (для COM-объектов) |
новый ActiveXObject() |
Функция CREATEOBJECT( ) |
|
Присвоение объекта объектной переменной |
= |
= |
= |
= STORE |
|
Функция или метод не возвращает значения |
Sub2 |
void |
Void (только серверы COM) |
||
Перегрузка функции или метода (Visual Basic: перегрузка процедуры или метода) |
(Для этой цели не требуется зарезервированное слово языка программирования) |
(Для этой цели не требуется зарезервированное слово языка программирования) |
(Для этой цели не требуется зарезервированное слово языка программирования) |
(Для этой цели не требуется зарезервированное слово языка программирования) |
|
Ссылка на текущий объект |
Me3 |
this |
this thisform |
||
Сделать невиртуальный вызов к виртуальному методу текущего объекта |
MyClass::Func1(), где MyClass – класс C++ с функцией члена Func1. |
нет |
нет |
нет |
|
Извлечение знака из строки |
*(p + 10) или p[10], где p – char* или wchar_t* |
str[10], где str — строка |
str[10], где str – string charAt substring substr |
SUBSTR( ) |
|
Объявление составного типа данных (структура) |
class, interface |
не определено |
|||
Инициализация объектов (конструктор) |
constructors (понятие, не ключевое слово) |
Конструкторы или конструкторы стандартного системного типа |
Конструктор (понятие, не ключевое слово)6 |
Событие Init |
|
Непосредственная ликвидация объекта |
не определено |
~ClassName |
не определено |
не определено |
не определено |
Метод, вызванный системой сразу же перед сборкой мусора, восстанавливает объект 7 |
Finalize (в Visual Basic 6.0, Class_Terminate) |
Destructors (C++) (понятие, не ключевое слово) |
не определено |
Событие 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 (Этот оператор возвращает ссылку на функцию в форме экземпляра делегата) |
Использование имени функции без скобок |
не определено |
||
Обратный вызов |
Передача адреса одной функции в другую, вызывающую вызвавшую функцию. Пример см. в разделе Практическое руководство. Передача процедур другой процедуре в Visual Basic. |
CALLBACK (стандартный тип) callback (атрибут IDL) |
не определено |
не определено |
|
Объявить, что объект может быть модифицирован асинхронно |
не определено |
не определено |
не определено |
||
Принудительное явное объявление переменных |
Не определено (Все переменные перед использованием должны быть объявлены) |
Не определено (Все переменные перед использованием должны быть объявлены) |
быстрый режим (по умолчанию) |
_VFP.LanguageOptions NEW |
|
Разрешение вывода локального типа |
|||||
Проверить переменный объект, не ссылающийся на объект |
pobj == NULL |
obj == null |
obj == undefined obj == null |
VARTYPE(obj)=="0" |
|
Вычислить переменную объекта, не ссылающуюся на объект |
nullptr |
null undefined |
.F. |
||
Проверка пустого выражения для базы данных |
не определено |
не определено |
x == null |
ISNULL( ) |
|
Проверка инициализации переменной Variant |
не определено |
не определено |
не определено |
x == undefined |
EMPTY( ) |
Определить свойство по умолчанию |
property: ключевое слово property относится к управляемому коду |
не определено |
не определено |
Объектно-ориентированное программирование
Описание |
Visual Basic |
C++ |
C# |
Язык JScript |
Visual FoxPro |
---|---|---|---|---|---|
Ссылка на базовый класс |
super |
Свойство BaseClass Свойство ParentClass DODEFAULT() Class::member |
|||
Объявить интерфейс |
interface |
DEFINE CLASS |
|||
Задать интерфейс для реализации |
(Просто выводится из интерфейса) class C1 : public I1 |
class C1 : I1 Интерфейсы |
IMPLEMENTS |
IMPLEMENTS NEW |
|
Объявить класс |
class |
DEFINE CLASS MyClass AS <ParentClass> |
|||
Объявление модуля |
static class |
static class |
нет |
нет |
|
Объявление частичного определения класса или структуры |
нет |
нет |
нет |
||
Указать, что класс может быть только получен как производный. Экземпляр класса не может быть создан |
abstract |
не определено |
|||
Указать, что класс не может быть получен как производный |
final |
нет |
|||
Объявить перечисляемый тип |
enum |
нет |
|||
Объявить константу класса |
const (применяется к объявлению поля) |
const |
#DEFINE |
||
Получить класс из базового класса |
Class C1 : public Base(Для этой цели не требуется зарезервированное слово языка программирования) |
class C1 : C2 |
Class c1 extends c2 |
DEFINE CLASS MyClass AS ParentClass |
|
Переопределение метода или свойства |
(Для этой цели не требуется зарезервированное слово языка программирования, кроме слова override для компиляции /clr – см. раздел Derived Classes) |
(Для этой цели не требуется зарезервированное слово языка программирования) |
(Для этой цели не требуется зарезервированное слово языка программирования) |
||
Объявить метод, который должен быть реализован в производном классе |
Поместить = 0 в конце объявления (чисто виртуальный метод) |
abstract |
(Для этой цели не требуется зарезервированное слово языка программирования) |
||
Объявить метод, который не может быть переопределен |
NotOverridable (методы являются NotOverridable по умолчанию.) |
final |
не определено |
||
Объявить виртуальный метод или свойство, или аксессор свойства |
(Методы виртуальны по умолчанию) |
не определено |
|||
Скрыть член базового класса в производном классе |
не определено |
||||
Объявить строго типизированную ссылку на метод класса |
Использование имени функции без скобок |
не определено |
|||
Указать, что переменная может содержать объект, события которого вы хотите обрабатывать |
не определено |
(Написать код – нет определенного зарезервированного слова) |
(Написать код – нет определенного зарезервированного слова) |
EVENTHANDLER( ) NEW |
|
Описать события, для которых будет вызываться процедура события |
Handles (Процедуры события все еще могут быть связаны с переменной WithEvents с помощью шаблона именования.) |
не определено |
event += eventHandler; |
не определено |
BINDEVENTS( ) |
Вычислить однажды выражение объекта для того, чтобы получить доступ к нескольким членам |
нет |
с 9 |
WITH ... ENDWITH |
Обработка исключений
Назначение |
Visual Basic |
C++ |
C# |
Язык JScript |
Visual FoxPro |
---|---|---|---|---|---|
Структурная обработка исключений |
try catch finally throw |
TRY [ tryCommands ] [ CATCH [ To VarName ] [ WHEN IExpression ] ] [ catchCommands ] ] [ THROW [ eUserExpression ] ] [ EXIT ] [ FINALLY [ finallyCommands ] ] ENDTRY |
|||
Обработка исключений С++ |
не определено |
не определено |
не определено |
не определено |
Структуры решений
Описание |
Visual Basic |
C++ |
C# |
Язык JScript |
Visual FoxPro |
---|---|---|---|---|---|
Структура принятия решений (выбор) |
case |
switch case break |
CASE ICASE |
||
Структура принятия решений (if ... then) |
if else |
IF ... ENDIF IIF( ) |
|||
Циклическая структура (условный) |
do, while break, continue |
DO, WHILE (предложения) |
|||
Циклическая структура (итерация) |
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 |
---|---|---|---|---|---|
Объявление массива |
int[] x = new int[5]; |
var x : int[] var arr = Array() |
DIMENSION DECLARE |
||
Инициализация массива |
var x : int[] = [1, 2, 3, 4, 5] var arr = new Array(1, 2, 3, 4, 5)] |
x[1] = 1 x[2] = 2 |
|||
Перераспределение массива |
не определено |
не определено |
arr.length=newSize (только для массивов JScript)10 |
DIMENSION DECLARE |
Область действия класса
Описание |
Visual Basic |
C++ |
C# |
Язык JScript |
Visual FoxPro |
---|---|---|---|---|---|
Видимый вне проекта или сборки |
public |
нет |
|||
Видимый только в пределах сборки, в которой объявлен |
internal |
нет |
|||
Видимый только в текущем и производных классах |
нет |
нет |
нет |
||
Доступ ограничен текущей сборкой или типами, которые являются производными от содержащего класса. |
protected internal |
нет |
нет |
||
Видимость только внутри проекта (для вложенных классов, внутри включающего класса) |
private |
не определено |
Область действия члена
Описание |
Visual Basic |
C++ |
C# |
Язык JScript |
Visual FoxPro |
---|---|---|---|---|---|
Доступны вне класса, проекта и модуля |
public |
(Для этой цели не требуется зарезервированное слово языка программирования) |
|||
Доступны вне класса, но внутри проекта или пакета |
public private: |
internal |
не определено |
||
Доступны только в текущем и производных классах |
protected |
PROTECTED |
|||
Доступны только внутри класса или модуля |
private |
HIDDEN |
|||
Указать, что функция или другой класс имеют доступ к закрытым членам объявляющего класса |
не определено |
friend (не разрешено в C++) |
friend |
не определено |
не определено |
Защищен внутри сборки и закрыт для других сборок |
не определено |
protected private |
не определено |
не определено |
не определено |
Доступ ограничен текущей сборкой или типами, которые являются производными от содержащего класса. |
protected internal |
нет |
нет |
Прочее время существования
Назначение |
Visual Basic |
C++ |
C# |
Язык JScript |
Visual FoxPro |
---|---|---|---|---|---|
Сохранить локальные переменные процедуры |
Static11 |
не определено |
не определено |
||
Обеспечить общий доступ всеми экземплярами класса |
static |
не определено |
Прочее
Описание |
Visual Basic |
C++ |
C# |
Язык JScript |
Visual FoxPro |
---|---|---|---|---|---|
Комментарий кода |
//, /* */ для многострочных комментариев |
* && ПРИМЕЧАНИЕ |
|||
Учет регистра |
Нет |
Да |
Да |
Да |
Нет |
Вызов API Windows |
не определено |
не определено |
DECLARE - DLL |
||
Объявление и генерация события |
не определено |
не определено |
Функция RAISEEVENT( ) |
||
Примитивы работы с потоками |
не определено |
не определено |
не определено |
||
Перейти (ветвление) |
не определено |
не определено |
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 для объявления переменной значение этой переменной сохраняется, даже если переменная теряет и затем восстанавливает область действия.
См. также
Ссылки
Сравнение концепций программирования в разных языках и примеры кода
Сравнение операторов в разных языках
Сравнение типов данных в разных языках
Сравнение элементов управления и программируемых объектов в разных языках и библиотеках