Palabras clave comparadas en varios lenguajes
En este tema se enumeran tareas de programación frecuentes que se pueden resumir en una palabra clave del lenguaje. Para obtener más información sobre tareas que necesitan ejemplos de código, vea Conceptos de programación comparados en diferentes lenguajes y ejemplos de código.
Finalidad |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Declarar una variable |
declaradores (concepto, no palabra clave) |
declaradores (las palabras clave incluyen tipos definidos por el usuario y tipos integrados) |
||
Declarar una constante con nombre |
||||
Crear una instancia nueva de una clase |
new |
|||
Crear un nuevo objeto |
CreateObject para los objetos COM |
CoCreateInstance() (para objetos COM) |
new |
|
Asignar un objeto a una variable objeto |
= |
= |
<- |
|
La función/método no devuelve un valor |
Sub2 |
|||
Sobrecargar una función o un método (Visual Basic: sobrecargar un procedimiento o un método) |
No se requiere ninguna palabra clave para esta finalidad |
No se requiere ninguna palabra clave para esta finalidad |
||
Hacer referencia al objeto actual |
Me3 |
Use el autoidentificador tal como se describe en Métodos o Miembros |
||
Realizar una llamada no virtual a un método virtual del objeto actual |
MyClass::Func1(), donde MyClass es una clase de C++ con una función miembro Func1. |
No es aplicable |
No es aplicable |
|
Recuperar caracteres de una cadena |
*(p + 10) o p[10], donde p es un char * o wchar_t * |
str[10], donde str es una cadena |
str.Chars(10), donde str es una cadena |
|
Declarar un tipo de datos compuesto (estructura) |
||||
Inicializar un objeto (constructor) |
constructores (concepto, no palabra clave) |
Constructores, o constructores de tipos predeterminados del sistema |
||
Finalizar un objeto de forma directa |
No es aplicable |
~ClassName |
No es aplicable |
No es aplicable |
Llamada del método por el sistema antes de que el recolector de elementos no utilizados reclame un objeto5 |
Finalize (en Visual Basic 6.0, Class_Terminate) |
Destructors (C++) (concepto, no palabra clave) |
||
Garantizar que los recursos no administrados se eliminan después de su uso |
No es aplicable |
|||
Inicializar una variable donde se declara |
Dim x As Long = 5 Dim c As New Car(FuelTypeEnum.Gas) |
// inicializar con un valor: int x=5; //con un constructor adecuado: C c(10); |
// inicializar con un valor: int x = 123; // o utilizar el constructor predeterminado: int x = new int(); |
let x = 123 |
Tomar la dirección de una función |
AddressOf (este operador devuelve una referencia a una función en forma de instancia de delegado) |
|||
Devolución de llamada |
Pase la dirección de una función a otra que devuelve la llamada al llamador. Para obtener un ejemplo, vea Cómo: Pasar procedimientos a otro procedimiento en Visual Basic. |
CALLBACK (tipo estándar) callback (atributo IDL) |
No es aplicable |
|
Declarar que un objeto se puede modificar de forma asincrónica |
No es aplicable |
No es aplicable |
||
Forzar la declaración explícita de variables |
No aplicable (se deben declarar todas las variables antes de su uso) |
No aplicable (se deben declarar todas las variables antes de su uso) |
No aplicable (se deben declarar todas las variables antes de su uso) |
|
Habilitar la inferencia de tipo de variable local |
La inferencia de tipos está habilitada automáticamente |
|||
Probar una variable objeto que no hace referencia a un objeto |
pobj == NULL |
obj == null |
Use un tipo de opción en una expresión de coincidencia |
|
Valor de una variable objeto que no hace referencia a un objeto |
nullptr |
|||
Probar una expresión de tipo null de una base de datos |
No es aplicable |
No es aplicable |
No es aplicable |
|
Probar si una variable Variant se ha inicializado |
No es aplicable |
No es aplicable |
No es aplicable |
No es aplicable |
Definir una propiedad predeterminada |
property: la palabra clave property hace referencia a código administrado |
Programación orientada a objetos
Finalidad |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Hacer referencia a una clase base |
||||
Declarar una interfaz |
||||
Especificar una interfaz para que se implemente |
Sólo hay que derivar de la interfaz. class C1 : public I1 |
class C1 : I1 Interfaces |
||
Declarar una clase |
||||
Declarar un módulo |
static class |
static class |
||
Declarar una definición parcial de una clase o estructura |
No es aplicable |
No hay equivalente directo. Vea Extensiones de tipo (F#). |
||
Especificar que una clase sólo se puede heredar. No se puede crear una instancia de la clase |
||||
Especificar que una clase no se puede heredar |
||||
Declarar un tipo enumerado |
||||
Declarar una constante de clase |
const (se aplica a una declaración de campo) |
Los valores son inmutables (constantes) de forma predeterminada. Vea Valores (F#). |
||
Derivar una clase de una clase base |
Class C1 : public Base (No se requiere ninguna palabra clave para esta finalidad) |
class C1 : C2 |
||
Reemplazar un método o una propiedad |
(No se requiere ninguna palabra clave para esta finalidad salvo override para compilaciones de /clr. Vea Derived Classes) |
|||
Declarar un método que se debe implementar en una clase que se deriva |
Poner = 0 al final de la declaración (método virtual puro) |
|||
Declarar un método que no se puede reemplazar |
NotOverridable (Los métodos son NotOverridable de manera predeterminada) |
Use el atributo Sealed |
||
Declarar una propiedad o método virtual, o descriptor de acceso de propiedad |
abstract, tal y como se describe en Métodos |
|||
Oculta un miembro de clase base en una clase derivada. |
No se permite ocultar un método virtual o abstracto |
|||
Declarar una referencia con seguridad de tipos a un método de una clase |
myObj.myFunction donde myObj es un objeto y myMethod es un método disponible en ese objeto |
|||
Especificar que una variable puede contener un objeto cuyos eventos se desea controlar |
No es aplicable |
Escribir código. No hay una palabra clave específica |
No es aplicable |
|
Especificar los eventos para los que se llamará a un procedimiento de evento. |
Handles (Los procedimientos de eventos todavía se pueden asociar a una variable WithEvents denominando el modelo) |
No es aplicable |
event += eventHandler; |
No es aplicable |
Evaluar una expresión de objeto una vez para tener acceso a varios miembros |
No es aplicable |
No es aplicable |
No es aplicable |
Control de excepciones
Finalidad |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Control de excepciones |
Control de excepciones estructurado:__try, __except Control de excepciones de C++: Control de excepciones de CLR: |
Estructuras de decisión
Finalidad |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Estructura de decisión (selección) |
||||
Estructura de decisión (if ... then) |
||||
Estructura de bucle (condicional) |
||||
Estructura de bucle (iteración) |
Matrices
Finalidad |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Declarar una matriz |
int[] x = new int[5]; |
let x = [| 1; 2; 3; 4; 5 |] |
||
Inicializar una matriz |
let x = [| 1; 2; 3; 4; 5 |] |
|||
Reasignar matriz |
No es aplicable |
No es aplicable |
No es aplicable |
Ámbito de clase
Finalidad |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Visible fuera del proyecto o del ensamblado |
||||
Visible únicamente en el ensamblado en el que está declarado. |
||||
Visible sólo dentro de las clases actuales o derivadas |
No es aplicable |
No es aplicable |
||
Acceso limitado al ensamblado actual o a los tipos derivados de la clase contenedora. |
protected internal |
No es aplicable |
||
Sólo visible dentro del proyecto (para clases anidadas, dentro de la clase envolvente) |
Ámbito de miembro
Finalidad |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Accesible fuera de la clase, el proyecto y el módulo |
||||
Accesible fuera de la clase, pero dentro del proyecto o paquete |
public private |
|||
Accesible sólo para clases actuales y derivadas |
No es aplicable |
|||
Sólo accesible dentro de la clase o el módulo |
||||
Especificar que una función u otra clase tiene acceso a miembros privados de la clase que se declara |
No es aplicable |
No es aplicable |
No es aplicable |
|
Protegido dentro del ensamblado y privado para los demás ensamblados |
No es aplicable |
protected private |
No es aplicable |
No es aplicable |
Acceso limitado al ensamblado actual o a los tipos derivados de la clase contenedora |
protected internal |
No es aplicable |
Períodos de duración varios
Finalidad |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Conservar las variables locales de un procedimiento |
No es aplicable |
|||
Compartido por todas las instancias de una clase. |
Varios
Finalidad |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Comentar código |
//, (* *) para comentarios de varias líneas |
|||
Distinguir mayúsculas de minúsculas |
No |
Sí |
Sí |
Sí |
Llamar a la API de Windows |
No es aplicable |
Utilizar invocación de plataforma. |
||
Declarar y provocar un evento. |
No es aplicable |
|||
Tipos primitivos de subprocesamiento |
No es aplicable |
|||
Ir a (ramificación) |
No es aplicable |
1 En Visual Basic, el único lugar en que Static se puede utilizar independientemente para declarar una variable (por ejemplo, Static x As Long) es dentro de un procedimiento.
2 En Visual Basic, los procedimientos declarados con la palabra clave Sub no pueden devolver valores. Si un procedimiento tiene que devolver un valor, se debe declarar con la palabra clave Function.
3 En Visual Basic, la palabra clave Me no se resuelve en tiempo de compilación, por lo que se puede utilizar como valor devuelto de una propiedad o método.
4 En Visual Basic, los constructores de las clases derivadas de .NET Framework System.Object siempre se denominan New.
5 Normalmente, el código de este método libera recursos del sistema que no liberaría automáticamente el recolector de elementos no utilizados.
6 En C++, una clase abstracta incluye al menos un miembro virtual puro.
7 En Visual Basic, las variables locales estáticas de métodos de clases no compartidos se almacenan por instancia de clase, en lugar de compartir una única copia como ocurre en otros lenguajes. Cuando se utiliza Static para declarar una variable, se conserva el valor de esa variable aunque pierda el ámbito y lo vuelva a obtener después.
Vea también
Referencia
Conceptos de programación comparados en diferentes lenguajes y ejemplos de código
Operadores comparados en varios lenguajes
Tipos de datos comparados en varios lenguajes
Comparación de los controles y objetos programables de distintos lenguajes y bibliotecas