Palabras clave comparadas en diferentes lenguajes
Actualización: noviembre 2007
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 con ejemplos de código.
Finalidad |
Visual Basic |
C++ |
C# |
Jscript |
Visual FoxPro |
---|---|---|---|---|---|
Declarar una variable |
declaradores (concepto, no palabra clave) |
declaradores (las palabras clave incluyen tipos definidos por el usuario y tipos integrados) |
var |
[declaración implícita] PUBLIC LOCAL PRIVATE |
|
Declarar una constante con nombre |
const |
#DEFINE |
|||
Crear una instancia nueva de una clase |
new |
Función NEWOBJECT( ) |
|||
Crear un nuevo objeto |
CreateObject() para objetos COM |
CoCreateInstance() (para objetos COM) |
new ActiveXObject() |
Función CREATEOBJECT( ) |
|
Asignar un objeto a una variable objeto |
= |
= |
= |
= STORE |
|
La función/método no devuelve un valor |
Sub2 |
void |
Void (sólo servidores COM) |
||
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 |
No se requiere ninguna palabra clave para esta finalidad |
No se requiere ninguna palabra clave para esta finalidad |
|
Hacer referencia al objeto actual |
Me3 |
this |
this thisform |
||
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 disponible |
no disponible |
no disponible |
|
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[10], donde str es una string charAt substring substr |
SUBSTR( ) |
|
Declarar un tipo de datos compuesto (estructura) |
class, interface |
no disponible |
|||
Inicializar un objeto (constructor) |
constructores (concepto, no palabra clave) |
Constructores, o constructores de tipos predeterminados del sistema |
Constructor (concepto, no palabra clave)6 |
Init (evento) |
|
Finalizar un objeto de forma directa |
no disponible |
~ClassName |
no disponible |
no disponible |
no disponible |
Llamada del método por el sistema antes de que el recolector de elementos no utilizados reclame un objeto7 |
Finalize (en Visual Basic 6.0, Class_Terminate) |
Destructors (C++) (concepto, no palabra clave) |
no disponible |
Destroy (evento) |
|
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(); |
var x = 5 var y : car = new car() |
LOCAL x x = 5 |
Tomar la dirección de una función |
AddressOf (este operador devuelve una referencia a una función en forma de instancia de delegado) |
Utilice el nombre de la función sin paréntesis |
no disponible |
||
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 disponible |
no disponible |
|
Declarar que un objeto se puede modificar de forma asincrónica |
no disponible |
no disponible |
no disponible |
||
Forzar la declaración explícita de variables |
no disponible (todas las variables se deben declarar antes de utilizarlas) |
no disponible (todas las variables se deben declarar antes de utilizarlas) |
modo rápido (activada de manera predeterminada) |
_VFP.LanguageOptions NEW |
|
Habilitar la inferencia de tipo de variable local |
|||||
Probar una variable objeto que no hace referencia a un objeto |
pobj == NULL |
obj == null |
obj == undefined obj == null |
VARTYPE(obj)=="0" |
|
Valor de una variable objeto que no hace referencia a un objeto |
nullptr |
null undefined |
.F. |
||
Probar una expresión de tipo null de una base de datos |
no disponible |
no disponible |
x == null |
ISNULL( ) |
|
Probar si una variable Variant se ha inicializado |
no disponible |
no disponible |
no disponible |
x == undefined |
EMPTY( ) |
Definir una propiedad predeterminada |
property: la palabra clave property hace referencia a código administrado |
no disponible |
no disponible |
Programación orientada a objetos
Finalidad |
Visual Basic |
C++ |
C# |
Jscript |
Visual FoxPro |
---|---|---|---|---|---|
Hacer referencia a una clase base |
super |
BaseClass (propiedad) ParentClass (propiedad) DODEFAULT() Class::member |
|||
Declarar una interfaz |
interface |
DEFINE CLASS |
|||
Especificar una interfaz para que se implemente |
Sólo hay que derivar de la interfaz. class C1 : public I1 |
class C1 : I1 Interfaces |
IMPLEMENTS |
IMPLEMENTS NEW |
|
Declarar una clase |
class |
DEFINE CLASSMyClassAS <ParentClass> |
|||
Declarar un módulo |
static class |
static class |
no disponible |
no disponible |
|
Declarar una definición parcial de una clase o estructura |
no disponible |
no disponible |
no disponible |
||
Especificar que una clase sólo se puede heredar. No se puede crear una instancia de la clase |
abstract |
no disponible |
|||
Especificar que una clase no se puede heredar |
final |
no disponible |
|||
Declarar un tipo enumerado |
enum |
no disponible |
|||
Declarar una constante de clase |
const (se aplica a una declaración de campo) |
const |
#DEFINE |
||
Derivar una clase de una clase base |
Class C1 : public Base (No se requiere ninguna palabra clave para esta finalidad) |
class C1 : C2 |
Class c1 extends c2 |
DEFINE CLASS MyClass AS ParentClass |
|
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) |
No se requiere ninguna palabra clave para esta finalidad |
No se requiere ninguna palabra clave para esta finalidad |
||
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) |
abstract |
No se requiere ninguna palabra clave para esta finalidad |
||
Declarar un método que no se puede reemplazar |
NotOverridable (Los métodos son NotOverridable de manera predeterminada) |
final |
no disponible |
||
Declarar una propiedad o método virtual, o descriptor de acceso de propiedad |
Los métodos son virtuales de forma predeterminada |
no disponible |
|||
Oculta un miembro de clase base en una clase derivada. |
no disponible |
||||
Declarar una referencia con seguridad de tipos a un método de una clase |
Utilice el nombre de la función sin paréntesis |
no disponible |
|||
Especificar que una variable puede contener un objeto cuyos eventos se desea controlar |
no disponible |
Escribir código. No hay una palabra clave específica |
Escribir código. No hay una palabra clave específica |
EVENTHANDLER( ) NEW |
|
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 disponible |
event += eventHandler; |
no disponible |
BINDEVENTS( ) |
Evaluar una expresión de objeto una vez para tener acceso a varios miembros |
no disponible |
con9 |
WITH ... ENDWITH |
Control de excepciones
Finalidad |
Visual Basic |
C++ |
C# |
Jscript |
Visual FoxPro |
---|---|---|---|---|---|
Control estructurado de excepciones |
try catch finally throw |
TRY [ tryCommands ] [ CATCH [ To VarName ] [ WHEN IExpression ] ] [ catchCommands ] ] [ THROW [ eUserExpression ] ] [ EXIT ] [ FINALLY [ finallyCommands ] ] ENDTRY |
|||
Control de excepciones de C++ |
no disponible |
no disponible |
no disponible |
no disponible |
Estructuras de decisión
Finalidad |
Visual Basic |
C++ |
C# |
Jscript |
Visual FoxPro |
---|---|---|---|---|---|
Estructura de decisión (selección) |
case |
switch case break |
CASE ICASE |
||
Estructura de decisión (if then) |
if else |
IF ... ENDIF IIF( ) |
|||
Estructura de bucle (condicional) |
do, while break, continue |
DO, WHILE (cláusulas) |
|||
Estructura de bucle (iteración) |
for (x=0;x<10;x++){...} for (prop in obj) { print (obj[prop]);} |
FOR (cláusulas) FOR ... ENDFOR Continue NEXT FOR EACH (cláusulas) ,FOR ... ENDFOR, Continue, Next |
Matrices
Finalidad |
Visual Basic |
C++ |
C# |
Jscript |
Visual FoxPro |
---|---|---|---|---|---|
Declarar una matriz |
int[] x = new int[5]; |
var x: int [] var arr = Array() |
DIMENSION DECLARE |
||
Inicializar una matriz |
var x : int[] = [1, 2, 3, 4, 5] var arr = new Array(1, 2, 3, 4, 5)] |
x[1] = 1 x[2] = 2 |
|||
Reasignar matriz |
no disponible |
no disponible |
arr.length=newSize (only for JScript arrays)10 |
DIMENSION DECLARE |
Ámbito de clase
Finalidad |
Visual Basic |
C++ |
C# |
Jscript |
Visual FoxPro |
---|---|---|---|---|---|
Visible fuera del proyecto o del ensamblado |
public |
no disponible |
|||
Visible únicamente en el ensamblado en el que está declarado. |
internal |
no disponible |
|||
Visible sólo dentro de las clases actuales o derivadas |
no disponible |
no disponible |
no disponible |
||
Acceso limitado al ensamblado actual o a los tipos derivados de la clase contenedora. |
protected internal |
no disponible |
no disponible |
||
Sólo visible dentro del proyecto (para clases anidadas, dentro de la clase envolvente) |
private |
no disponible |
Ámbito de miembro
Finalidad |
Visual Basic |
C++ |
C# |
Jscript |
Visual FoxPro |
---|---|---|---|---|---|
Accesible fuera de la clase, el proyecto y el módulo |
public |
No se requiere ninguna palabra clave para esta finalidad |
|||
Accesible fuera de la clase, pero dentro del proyecto o paquete |
public private: |
internal |
no disponible |
||
Accesible sólo para clases actuales y derivadas |
protected |
PROTECTED |
|||
Sólo accesible dentro de la clase o el módulo |
private |
HIDDEN |
|||
Especificar que una función u otra clase tiene acceso a miembros privados de la clase que se declara |
no disponible |
friend (no se permite en C++) |
friend |
no disponible |
no disponible |
Protegido dentro del ensamblado y privado para los demás ensamblados |
no disponible |
protected private |
no disponible |
no disponible |
no disponible |
Acceso limitado al ensamblado actual o a los tipos derivados de la clase contenedora |
protected internal |
no disponible |
no disponible |
Períodos de duración varios
Finalidad |
Visual Basic |
C++ |
C# |
Jscript |
Visual FoxPro |
---|---|---|---|---|---|
Conservar las variables locales de un procedimiento |
Static11 |
no disponible |
no disponible |
||
Compartido por todas las instancias de una clase. |
static |
no disponible |
Varios
Finalidad |
Visual Basic |
C++ |
C# |
Jscript |
Visual FoxPro |
---|---|---|---|---|---|
Comentar código |
//, /* */ para comentarios de varias líneas |
* && NOTE |
|||
Distinguir mayúsculas de minúsculas |
No |
Sí |
Sí |
Sí |
No |
Llamar a la API de Windows |
no disponible |
no disponible |
DECLARE - DLL |
||
Declarar y provocar un evento. |
no disponible |
no disponible |
Función RAISEEVENT( ) |
||
Tipos primitivos de subprocesamiento |
no disponible |
no disponible |
no disponible |
||
Ir a (ramificación) |
no disponible |
no disponible |
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 JScript, todavía se admite la función substr, pero no es la forma más recomendada de acceso a los caracteres de una cadena. La mejor manera de tener acceso a un carácter desde una ubicación concreta de una cadena es la de utilizar corchetes. Por ejemplo, para tener acceso al décimo carácter de la cadena str, utilice str[10].
5 En Visual Basic, los constructores de las clases derivadas de .NET Framework System.Object siempre se denominan New.
6 En JScript, no se permite la sobrecarga en constructores.
7 Normalmente, el código de este método libera recursos del sistema que no liberaría automáticamente el recolector de elementos no utilizados.
8 En C++, una clase abstracta incluye al menos un miembro virtual puro.
9 En JScript, no existe el punto inicial que se utilizaría en Visual Basic. Es fácil que esta característica cree confusión porque las variables se pueden interpretar como propiedades y viceversa. Tenga en cuenta también que la instrucción with produce un código lento.
10 En JScript, esto no reasigna la matriz y tampoco la hace "aumentar". Las matrices JScript (declaradas como tipo Array) son siempre dispersas y dinámicas. Las matrices nativas (declaradas como System.Array o como type[]) no son dinámicas.
11 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 con ejemplos de código
Operadores comparados en diferentes lenguajes
Tipos de datos comparados en diferentes lenguajes
Comparación de los controles y objetos programables de distintos lenguajes y bibliotecas