Compartir a través de


Lo que puede variar con la programación

La diferencia más significativa entre los lenguajes de programación compatibles es la sintaxis de los lenguajes, lo cual no resulta nada sorprendente. Tanto C++ como Visual Basic tienen un largo historial y una base significativa de código existente, que se tomaron en cuenta al actualizarlos para .NET. Por otra parte, Visual C# es más reciente. Se incluyen varios temas avanzados, como el proceso de generación y la definición de espacios de nombres, junto con el correspondiente código de ejemplo en las siguientes secciones, pero a continuación se describen algunas de las diferencias más obvias entre los lenguajes.

Diferencia entre minúsculas y mayúsculas —C++ y Visual C# distinguen entre minúsculas y mayúsculas, a diferencia de Visual Basic. Para que un programa sea compatible con CLS, sin embargo, los miembros públicos no pueden diferir sólo en las letras minúsculas y mayúsculas. Esta restricción permite a Visual Basic (y posiblemente a otros lenguajes compatibles con CLS) generar componentes y utilizar componentes creados en otros lenguajes que distingan minúsculas de mayúsculas.

Referencia a una biblioteca —Para utilizar clases, ubicadas en espacios de nombres, es necesario obtener primero una referencia al ensamblado que contiene el espacio de nombres requerido. Todos los programas de .NET utilizan al menos el espacio de nombres System, ubicado en Mscorlib.dll (que normalmente se encuentra en el directorio Windows\System). Visual Basic y Visual C# hacen implícitamente referencia a Mscorlib.dll, pero es preciso incluir la siguiente directiva de preprocesador en un programa de Extensiones administradas de C++:

#using <mscorlib.dll>

Si bien Visual C# y Visual Basic hacen referencia implícita al ensamblado mscorlib, es necesario utilizar el modificador de compilación /reference para otros ensamblados. Las bibliotecas a las que se hace referencia suelen estar ubicadas en el directorio de la aplicación o en un subdirectorio de la misma. Las bibliotecas diseñadas para ser utilizadas por numerosas aplicaciones (por ejemplo, las herramientas proporcionadas por otros proveedores), están ubicadas en la caché del ensamblado (Directorio de Windows\Assembly) y deben observar determinadas instrucciones. Los archivos de configuración de la aplicación pueden proporcionar opciones adicionales. Para las aplicaciones ASP.NET, sin embargo, los componentes deben estar ubicados en el subdirectorio \Bin debajo del punto inicial del directorio virtual de la aplicación.

Importación de un espacio de nombres — A las clases se les puede hacer referencia mediante una referencia completa (por ejemplo, System.IO.FileStream, que es similar a un nombre completo de ruta de acceso) o su espacio de nombres se puede importar al programa, tras lo cual no es necesario utilizar el nombre completo de las clases que contiene. Para poder obtener acceso fácilmente a los objetos System, dicho espacio de nombres debe importarse, tal y como se muestra en la siguiente tabla.

Extensiones administradas de C++ (Managed Extensions for C++)
using namespace System;
Visual C#
using System;
Visual Basic
Imports System

Referencia a miembros de objetos — Tanto Visual Basic como Visual C# admiten el punto (.) como operador de resolución de ámbito que, por ejemplo, permite la sintaxis Console.WriteLine al hacer referencia al método WriteLine de Console. Extensiones administradas de C++ utiliza el signo doble de dos puntos (::) como operador de resolución.

Declaración de objetos — A diferencia de Visual Basic, en Extensiones administradas de C++ y en Visual C# se han de declarar las variables antes de poder utilizarlas. Para crear una nueva instancia de un objeto, utilice la palabra clave new. La siguiente tabla contiene las instrucciones de declaración y creación de ejemplo para cada uno de los tres lenguajes. Cada instrucción declara y crea un objeto denominado myComp que es del tipo Comp, ubicado en el espacio de nombres Lib.

C++
Lib::Comp* myComp = new Lib::Comp();
Visual C#
Lib.Comp myComp = new Lib.Comp();
Visual Basic
Dim myComp As New Lib.Comp

Punto de entrada de los programas — Cada programa ejecutable debe tener un punto de entrada externo donde la aplicación comienza su ejecución. No cambia la sintaxis para Extensiones administradas de C++ pero en Visual C# y Visual Basic, todo sucede en una clase. En el siguiente código se muestra la sintaxis de Extensiones administradas de C++:

void main() {
}

En el siguiente código se muestra la sintaxis de Visual C#:

class MainApp {
   public static void Main() {
   }
}

En el siguiente código se muestra la sintaxis de Visual Basic:

Public Module modmain
   Sub Main()
   End Sub
End Module

En segundo plano, sin embargo, el compilador de Extensiones administradas de C++ encapsula el punto de entrada en una clase.

Definición de un espacio de nombres y una clase — Cada uno de los tres lenguajes admite la creación de espacios de nombres personalizados o de clases dentro de esos espacios de nombres. Los tres lenguajes controlan esto en código, si bien con una sintaxis ligeramente diferente. Por ejemplo, Extensiones administradas de C++ utiliza una declaración de clase administrada y no se precisan puntos y comas finales para las declaraciones de espacio de nombres y clase en Visual C#. En el siguiente código se muestra la sintaxis de Extensiones administradas de C++:

namespace CompVC {
   __gc class StringComponent {
   public:
      StringComponent() {
      }
   };
};

En el siguiente código se muestra la sintaxis de Visual C#:

namespace CompCS {
   public class StringComponent {
      public StringComponent() {...}
   }
}

En el siguiente código se muestra la sintaxis de Visual Basic:

Namespace CompVB
   Public Class StringComponent
      Public Sub New()
      End Sub
   End Class
End Namespace

Vea también

Hola a todos | Escribir componentes simples de .NET | Clientes para los componentes simples | Resumen del tutorial sobre la programación | Apéndice A: Herramientas para explorar espacios de nombres