Сравнение ключевых слов в разных языках
В этом разделе приведен список общих задач программирования, которые могут быть сведены к ключевым словам. Дополнительные сведения о задачах, для которых требуются примеры кода, см. в разделе Сравнение концепций программирования в разных языках и примеры кода.
Назначение |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Объявление переменной |
declarators (понятие, не ключевое слово) |
деклараторы (ключевые слова включают типы, определенные пользователем, и встроенные типы) |
||
Объявление именованной константы |
||||
Создание нового экземпляра класса |
new |
|||
Создание нового объекта |
CreateObject для COM-объектов |
CoCreateInstance() (для COM-объектов) |
new |
|
Присвоение объекта объектной переменной |
= |
= |
<- |
|
Функция или метод не возвращает значения |
Sub2 |
|||
Перегрузка функции или метода (Visual Basic: перегрузка процедуры или метода) |
(Для этой цели не требуется зарезервированное слово языка программирования) |
(Для этой цели не требуется зарезервированное слово языка программирования) |
||
Ссылка на текущий объект |
Me3 |
Используйте собственный идентификатор, как описано в разделах Методы или Члены |
||
Сделать невиртуальный вызов к виртуальному методу текущего объекта |
MyClass::Func1(), где MyClass – класс C++ с функцией члена Func1. |
Неприменимо |
Неприменимо |
|
Извлечение знака из строки |
*(p + 10) или p[10], где p – char* или wchar_t* |
str[10], где str — строка |
str.Chars(10), где str — строка |
|
Объявление составного типа данных (структура) |
||||
Инициализация объектов (конструктор) |
constructors (понятие, не ключевое слово) |
Конструкторы или конструкторы стандартного системного типа |
||
Непосредственная ликвидация объекта |
Неприменимо |
~ClassName |
Неприменимо |
Неприменимо |
Метод, вызванный системой сразу же перед сборкой мусора, восстанавливает объект 5 |
Finalize (в Visual Basic 6.0, Class_Terminate) |
Destructors (C++) (понятие, не ключевое слово) |
||
Гарантирует удаление неуправляемых ресурсов после использования |
Неприменимо |
|||
Инициализация переменной в месте объявления |
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 (Этот оператор возвращает ссылку на функцию в форме экземпляра делегата) |
|||
Обратный вызов |
Передача адреса одной функции в другую, вызывающую вызвавшую функцию. Пример см. в разделе Практическое руководство. Передача процедур другой процедуре в Visual Basic. |
CALLBACK (стандартный тип) callback (атрибут IDL) |
Неприменимо |
|
Объявить, что объект может быть модифицирован асинхронно |
Неприменимо |
Неприменимо |
||
Принудительное явное объявление переменных |
Не применяется (Все переменные должны быть объявлены перед использованием) |
Не применяется (Все переменные должны быть объявлены перед использованием) |
Не применяется (Все переменные должны быть объявлены перед использованием) |
|
Разрешение вывода локального типа |
Определение типа включается автоматически |
|||
Проверить переменный объект, не ссылающийся на объект |
pobj == NULL |
obj == null |
Использовать тип параметра в выражении соответствия |
|
Вычислить переменную объекта, не ссылающуюся на объект |
nullptr |
|||
Проверка пустого выражения для базы данных |
Неприменимо |
Неприменимо |
Неприменимо |
|
Проверка инициализации переменной Variant |
Неприменимо |
Неприменимо |
Неприменимо |
Неприменимо |
Определить свойство по умолчанию |
property: ключевое слово property относится к управляемому коду |
Объектно-ориентированное программирование
Назначение |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Ссылка на базовый класс |
||||
Объявить интерфейс |
||||
Задать интерфейс для реализации |
(Просто выводится из интерфейса) class C1 : public I1 |
class C1 : I1 интерфейсов, |
||
Объявить класс |
||||
Объявление модуля |
static class |
static class |
||
Объявление частичного определения класса или структуры |
Неприменимо |
Прямого эквивалента нет. См. раздел Расширения типов (F#). |
||
Указать, что класс может быть только получен как производный. Экземпляр класса не может быть создан |
||||
Указать, что класс не может быть получен как производный |
||||
Объявить перечисляемый тип |
||||
Объявить константу класса |
const (применяется к объявлению поля) |
По умолчанию значения являются неизменяемыми (константными). См. раздел Значения (F#). |
||
Получить класс из базового класса |
Class C1 : public Base(Для этой цели не требуется зарезервированное слово языка программирования) |
class C1 : C2 |
||
Переопределение метода или свойства |
(Для этой цели не требуется зарезервированное слово языка программирования, кроме слова override для компиляции /clr – см. раздел Derived Classes) |
|||
Объявить метод, который должен быть реализован в производном классе |
Поместить = 0 в конце объявления (чисто виртуальный метод) |
|||
Объявить метод, который не может быть переопределен |
NotOverridable (методы являются NotOverridable по умолчанию.) |
Используйте атрибут Sealed |
||
Объявить виртуальный метод или свойство, или аксессор свойства |
abstract, рассматриваемый в разделе Методы. |
|||
Скрыть член базового класса в производном классе |
Скрытие виртуального или абстрактного метода не разрешено |
|||
Объявить типобезопасную ссылку на метод класса |
myObj.myFunction, где myObj — это объект, а myMethod — это метод, доступный для этого объекта |
|||
Указать, что переменная может содержать объект, события которого вы хотите обрабатывать |
Неприменимо |
(Написать код – нет определенного зарезервированного слова) |
Неприменимо |
|
Описать события, для которых будет вызываться процедура события |
Handles (Процедуры события все еще могут быть связаны с переменной WithEvents с помощью шаблона именования.) |
Неприменимо |
event += eventHandler; |
Неприменимо |
Вычислить однажды выражение объекта для того, чтобы получить доступ к нескольким членам |
Неприменимо |
Неприменимо |
Неприменимо |
Обработка исключений
Назначение |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Обработка исключений |
Структурная обработка исключений:__try, __except Обработка исключений С++: Обработка исключений в среде CLR: |
Структуры решений
Назначение |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Структура принятия решений (выбор) |
||||
Структура решений (если ... then) |
||||
Циклическая структура (условный) |
||||
Циклическая структура (итерация) |
Массивы
Назначение |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Объявление массива |
int[] x = new int[5]; |
let x = [| 1; 2; 3; 4; 5 |] |
||
Инициализация массива |
let x = [| 1; 2; 3; 4; 5 |] |
|||
Перераспределение массива |
Неприменимо |
Неприменимо |
Неприменимо |
Область действия класса
Назначение |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Видимый вне проекта или сборки |
||||
Видимый только в пределах сборки, в которой объявлен |
||||
Видимый только в текущем и производных классах |
Неприменимо |
Неприменимо |
||
Доступ ограничен текущей сборкой или типами, которые являются производными от содержащего класса. |
protected internal |
Неприменимо |
||
Видимость только внутри проекта (для вложенных классов, внутри включающего класса) |
Область действия члена
Назначение |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Доступны вне класса, проекта и модуля |
||||
Доступны вне класса, но внутри проекта или пакета |
public private |
|||
Доступны только в текущем и производных классах |
Неприменимо |
|||
Доступны только внутри класса или модуля |
||||
Указать, что функция или другой класс имеют доступ к закрытым членам объявляющего класса |
Неприменимо |
Неприменимо |
Неприменимо |
|
Защищен внутри сборки и закрыт для других сборок |
Неприменимо |
protected private |
Неприменимо |
Неприменимо |
Доступ ограничен текущей сборкой или типами, которые являются производными от содержащего класса. |
protected internal |
Неприменимо |
Прочее время существования
Назначение |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Сохранить локальные переменные процедуры |
Неприменимо |
|||
Обеспечить общий доступ всеми экземплярами класса |
Прочее
Назначение |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Комментарий кода |
//, (* *) для многострочных комментариев |
|||
Учет регистра |
Нет |
Да |
Да |
Да |
Вызов API Windows |
Неприменимо |
Используйте вызов неуправляемого кода. См. раздел Внешние функции (F#). |
||
Объявление и генерация события |
Неприменимо |
|||
Примитивы работы с потоками |
Неприменимо |
|||
Перейти (ветвление) |
Неприменимо |
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 для объявления переменной значение этой переменной сохраняется, даже если переменная теряет и затем восстанавливает область действия.
См. также
Ссылки
Сравнение концепций программирования в разных языках и примеры кода
Сравнение операторов в разных языках
Сравнение типов данных в разных языках
Сравнение элементов управления и программируемых объектов в разных языках и библиотеках