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

Instrucción Dim (Visual Basic)

Public (Visual Basic)

Friend (Visual Basic)

Protected (Visual Basic)

Private (Visual Basic)

Shared (Visual Basic)

Static (Visual Basic)1

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

const

const

readonly

const

#DEFINE

Crear una instancia nueva de una clase

New

new

gcnew

new

new

Función NEWOBJECT( )

Crear un nuevo objeto

New (Visual Basic)

CreateObject() para objetos COM

CoCreateInstance() (para objetos COM)

new 

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

void

Void (sólo servidores COM)

Sobrecargar una función o un método (Visual Basic: sobrecargar un procedimiento o un método)

Overloads

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

this

this

thisform

Realizar una llamada no virtual a un método virtual del objeto actual

MyClass

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

GetChar (Función)

*(p + 10) o p[10], donde p es un char * o wchar_t *

str[10], donde str es una cadena

string4

str[10], donde str es una string

charAt

substring

substr

SUBSTR( )

Declarar un tipo de datos compuesto (estructura)

Structure

class

struct

union

__interface

struct

class

interface

class, interface

no disponible

Inicializar un objeto (constructor)

Sub New()5

constructores (concepto, no palabra clave)

Constructores, o constructores de tipos predeterminados del sistema

Constructores de clase

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)

Destructores

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)

delegate

delegate

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)

delegate

no disponible

no disponible

Declarar que un objeto se puede modificar de forma asincrónica

no disponible

volatile

volatile

no disponible

no disponible

Forzar la declaración explícita de variables

Option Explicit

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

Option Infer

Probar una variable objeto que no hace referencia a un objeto

obj Is Nothing

pobj == NULL

obj == null

obj == undefined

obj == null

VARTYPE(obj)=="0"

Valor de una variable objeto que no hace referencia a un objeto

Nothing

nullptr

null

null

undefined

.F.

Probar una expresión de tipo null de una base de datos

IsDbNull

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

Default

property: la palabra clave property hace referencia a código administrado

Indizadores

no disponible

no disponible

Programación orientada a objetos

Finalidad

Visual Basic

C++

C#

Jscript

Visual FoxPro

Hacer referencia a una clase base

MyBase

__super

base

super

BaseClass (propiedad)

ParentClass (propiedad)

DODEFAULT()

Class::member

Declarar una interfaz

Interface

__interface

interface class

interface

interface

DEFINE CLASS

Especificar una interfaz para que se implemente

Implements

Sólo hay que derivar de la interfaz.

class C1 : public I1

class C1 : I1

Interfaces

IMPLEMENTS

IMPLEMENTS NEW 

Declarar una clase

Class

class

Classes and Structs (Managed)

class

class

DEFINE CLASSMyClassAS <ParentClass>

Declarar un módulo

Módulo

static class

static class

no disponible

no disponible

Declarar una definición parcial de una clase o estructura

Partial

no disponible

Partial

no disponible

no disponible

Especificar que una clase sólo se puede heredar. No se puede crear una instancia de la clase

MustInherit

abstract (Visual C++)8

abstract

abstract

no disponible

Especificar que una clase no se puede heredar

NotInheritable

sealed

sealed

final

no disponible

Declarar un tipo enumerado

Enumeración

enum

enum

enum

no disponible

Declarar una constante de clase

Const

const

const (se aplica a una declaración de campo)

const

#DEFINE

Derivar una clase de una clase base

Clase C1 hereda C2

Class C1 : public Base (No se requiere ninguna palabra clave para esta finalidad)

class C1 : C2

class

Class c1 extends c2

DEFINE CLASS MyClass AS ParentClass

Reemplazar un método o una propiedad

Overrides

(No se requiere ninguna palabra clave para esta finalidad salvo override para compilaciones de /clr. Vea Derived Classes)

override

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

MustOverride

Poner = 0 al final de la declaración (método virtual puro)

abstract

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)

sealed

sealed

final

no disponible

Declarar una propiedad o método virtual, o descriptor de acceso de propiedad

Overridable

virtual

virtual

Los métodos son virtuales de forma predeterminada

no disponible

Oculta un miembro de clase base en una clase derivada.

Sombrear

new (new slot in vtable)

new (Referencia de C#)

Modificador new

no disponible

Declarar una referencia con seguridad de tipos a un método de una clase

Delegate

delegate

delegate

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

WithEvents

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

With... End With

no disponible

using (Instrucción, Referencia de C#)

con9

WITH ... ENDWITH

Control de excepciones

Finalidad

Visual Basic

C++

C#

Jscript

Visual FoxPro

Control estructurado de excepciones

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

Control de excepciones de C++

no disponible

try, catch, throw

no disponible

no disponible

no disponible

Estructuras de decisión

Finalidad

Visual Basic

C++

C#

Jscript

Visual FoxPro

Estructura de decisión (selección)

Select... Case... End Select

switch, case, default

goto

break

switch

case

default

goto

break

switch

case

break

CASE

ICASE

Estructura de decisión (if then)

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

ElseIf

if, else

if, else

if

else

IF ... ENDIF

IIF( )

Estructura de bucle (condicional)

While... End While

Do...Loop

do, while

continue

do

while

continue

do, while

break, continue

DO, WHILE (cláusulas)

Estructura de bucle (iteración)

For... Next (Palabra clave)

For Each... Next (Palabra clave)

for

for

foreach

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

Dim a() As Long

int x[5];

int[] x = new int[5];

var x: int []

var arr = Array()

DIMENSION

DECLARE

Inicializar una matriz

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

Reasignar matriz

Redim

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

public

public

public

no disponible

Visible únicamente en el ensamblado en el que está declarado.

Friend

private

internal

internal

no disponible

Visible sólo dentro de las clases actuales o derivadas

Protected

no disponible

Protected

no disponible

no disponible

Acceso limitado al ensamblado actual o a los tipos derivados de la clase contenedora.

Protected Friend

Type and Member Visibility

protected internal

Niveles de accesibilidad

no disponible

no disponible

Sólo visible dentro del proyecto (para clases anidadas, dentro de la clase envolvente)

Private

private

private

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

public

public

public

No se requiere ninguna palabra clave para esta finalidad

Accesible fuera de la clase, pero dentro del proyecto o paquete

Friend

public private:

internal

internal

no disponible

Accesible sólo para clases actuales y derivadas

Protected

protected

protected

protected

PROTECTED

Sólo accesible dentro de la clase o el módulo

Private

private

private

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 Friend

Type and Member Visibility

protected internal

Niveles de accesibilidad

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

static

static (Referencia de C#)

no disponible

no disponible

Compartido por todas las instancias de una clase.

Shared

static

static

static

no disponible

Varios

Finalidad

Visual Basic

C++

C#

Jscript

Visual FoxPro

Comentar código

'

Rem

//, /* */ para comentarios de varias líneas

//, /* */ para comentarios de varias líneas

/// para comentarios XML

//, /* */ para comentarios de varias líneas

*

&&

NOTE

Distinguir mayúsculas de minúsculas

No

No

Llamar a la API de Windows

Declare <API>

no disponible

Utilizar invocación de plataforma

no disponible

DECLARE - DLL

Declarar y provocar un evento.

Event

RaiseEvent

no disponible

evento

no disponible

Función RAISEEVENT( )

Tipos primitivos de subprocesamiento

SyncLock

no disponible

lock

no disponible

no disponible

Ir a (ramificación)

Goto

goto

goto

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

Otros recursos

Equivalentes del lenguaje

Visual J#