miércoles, 9 de octubre de 2013

Receta C# No. 1-7: Acceso a Elementos de un Programa que Tienen el Mismo Nombre que una Palabra Clave

Tabla de Contenido

0. Introducción
1. Problema
2. Solución
3. Discusión de la Solución
4. Práctica: Código C#
5. Uso de la Solución
6. Conclusiones
7. Glosario
8. Referencias

0. Introducción

Quizás haya sido experiencia de muchos el haber declarado (sin darnos cuenta) una variable o constante que creó conflicto con el nombre de una palabra clave del lenguaje de programación. En C# se presenta una solución a este conflicto de identificadores a través del símbolo @. La solución al problema de la receta se centra en el uso de esta construcción del lenguaje.

1. Problema

Un programador ha incluído una librearía que trae tipos y miembros que conflictan con las palabras claves del lenguaje C#.

2. Solución

El signo @ (también conocido como verbatim en C#) antepuesto (prefijo) en el identificador de un tipo o miembro permite resolver el conflicto.

[Nota: Para saber más acerca de este signo puede consultar [1] y en [2]]

3. Discusión de la Solución

Entre los lenguajes compatibles con el .NET Framework (o CLR-compliant) se pueden nombrar algunos como: Visual Basic .NET, F#, J#, C++. Cada uno de estos lenguajes de programación posee un conjunto definido de palabras claves (éstas difieren en cierta medida entre cada lenguaje). Lo anterior puede conducir a un programador de un lenguaje distinto a C# a utilizar una o varias palabras claves disponibles en éste último. Cuando el programador haya creado el componente y nos dispongamos a utilizarlo en una aplicación basada en C#, se generarán conflictos por los nombre de los identificadores de los tipos de datos y los miembros de éstos.

En el lenguaje C# el programador tiene disponible el signo @ para remover el conflicto que se crea entre identificadores de tipos, y miembros, y las palabras claves del lenguaje.

4. Práctica: Código C#

Antes de presentar el código fuente de C# de ejemplo, quiero hacer las siguientes aclaraciones:
  1. He utilizado el mismo lenguaje C# para crear los tipos de datos y miembros con identificadores que conflictan con los nombres de las palabras claves, desde luego, agregando el prefijo @ en cada uno.

  2. El aplicación cliente también estará escrita en lenguaje C#.
  3. Los nombres de los tipos y los miembros están en inglés dado que corresponden con las palabras claves del lenguaje.
El nombre del tipo @operator corresponde con la palabra clave operator [4]. Lo mismo ocurre con el miembro (propiedad) @volatile; sin el prefijo @ se sobrepondría con la palabra clave volatile [5].

Archivo C# AppClienteTelephony.cs [enlace alternativo]:

Nuevamente podemos ver en las líneas 12, 14, y 16 el uso del signo @ para remover el conflicto entre tipos (y miembros) y palabras reservadas de C#.

5. Uso de la Solución

5.1 Compilación

Para compilar el archivo Telephony.cs utilizamos el siguiente comando:


y el archivo AppClienteTelephony.cs de esta manera:



Luego tendremos estos archivos en el directorio de trabajo:
Archivos creados y generados.
Figura 1. Archivos directorio de trabajo.

5.2 Ejecución

Cuando ejecutemos el archivo AppClienteTelephony.exe obtenemos en pantalla:
Programa AppClienteTelephony corriendo.
Figura 2. Programa AppClienteTelephony corriendo.

6. Conclusiones

Hemos aprendido que en situaciones donde por una u otra razón alguna librería creada en otro lenguaje diferente incluye tipos y miembros de tipos que conflictan con las palabras reservadas de C# podemos recurrir al uso del prefijo (o signo) @ para remover este problema.

7. Glosario

  • @
  • CLR-compliant
  • Verbatim

Enlaces & Literatura

[1]: Caracteres y Cadenas de Caracteres en C# - Parte 2 | Experiencias Construcción Software - http://ortizol.blogspot.com/2013/08/caracteres-y-cadenas-de-caracteres-en-c_29.html
[2]: 2.4.4.5 String literals (C#) - http://msdn.microsoft.com/en-us/library/aa691090(v=vs.71).aspx
[3]: Visual C# 2010 Recibes by Allen Jones and Adam Freeman. Copyright 2010 Allen Jones and Adam Freeman, 978-1-4302-2525-6.
[4]: operator (C# Reference) - http://msdn.microsoft.com/en-us/library/s53ehcz3.aspx
[5]: volatile (C# Reference) - http://msdn.microsoft.com/en-us/library/x13ttww7.aspx


O

No hay comentarios:

Publicar un comentario

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.