Lenguaje C#

 Concepto

 

C# (pronunciado si sharp en inglés) es un lenguaje de programación orientado a objetos desarrollado y estandarizado por Microsoft como parte de su plataforma.NET, que después fue aprobado como un estándar por la ECMA e ISO.

Características

Su sintaxis básica deriva de C/C++ y utiliza el modelo de objetos de la plataforma.NET el cual es similar al de Java aunque incluye mejoras derivadas de otros lenguajes (entre ellos Delphi).

La creación del nombre del lenguaje, C♯, proviene de dibujar dos signos positivos encima de los dos signos positivos de "C++", queriendo dar una imagen de salto evolutivo del mismo modo que ocurrió con el paso de C a C++.

C# como parte de la plataforma.NET, está normalizado por ECMA desde diciembre de 2001 (C# Language Specification "Especificación del lenguaje C♯"). El 7 de noviembre de 2005 salió la versión 2.0 del lenguaje que incluía mejoras tales como tipos genéricos, métodos anónimos, iteradores, tipos parciales y tipos anulables. El 19 de noviembre de 2007 salió la versión 3.0 de C# destacando entre las mejoras los tipos implícitos, tipos anónimos y LINQ (Language Integrated Query -consulta integrada en el lenguaje).

Aunque C# forma parte de la plataforma.NET, ésta es una interfaz de programación de aplicaciones (API); mientras que C♯ es un lenguaje de programación independiente diseñado para generar programas sobre dicha plataforma. Ya existe un compilador implementado que provee el marco de DotGNU - Mono que genera programas para distintas plataformas como Win32, UNIX y Linux.

Historia

Durante el desarrollo de la plataforma .NET, las bibliotecas de clases fueron escritas originalmente en el lenguaje compilador Simple Managed C.En enero de 1999, Anders Hejlsberg formó un equipo con la misión de desarrollar un nuevo lenguaje de programación llamado Cool (C Orientado a Objetos). Este nombre tuvo que ser cambiado debido a problemas de marca pasando a llamarse C♯ aunque habitualmente se escribe C#.[1] La biblioteca de clases de la plataforma .NET fue migrada entonces al nuevo lenguaje.

Hejlsberg lideró el proyecto de desarrollo de C♯. Anteriormente, ya participó en el desarrollo de otros lenguajes como Turbo Pascal, J++ y Borland Delphi

Tipos de datos

C♯ contiene dos categorías generales de tipos de datos integrados: tipos de valor y tipos de referencia. El término tipo de valor indica que esos tipos contienen directamente sus valores.

  • Instrucciones de control
  • La instrucción if-else es básicamente igual que en C, C++ y Java.
  • La diferencia de la instrucción switch con la versión de C, C++ y Java es que todo cuerpo perteneciente a un case debe de toparse con un break o un goto antes de toparse con otro case, a menos que dicho cuerpo esté vacío.
  • La instrucción for es básicamente igual que en C, C++ y Java.
  • La instrucción while es básicamente igual que en C, C++ y Java.
  • La instrucción do-while es básicamente igual que en C, C++ y Java.
  • La instrucción foreach realiza un ciclo a través de los elementos de una colección (grupo de objetos). El formato de esta instrucción es: foreach(tipo variable in coleccion) instruccion;. En este ciclo se recorre la colección y la variable recibe un respectivo elemento de dicha colección en cada iteración.
  • Al igual que en C y C++, la instrucción break permite forzar la salida de un ciclo omitiendo el código restante en el cuerpo del ciclo.
  • Al igual que en C y C++, la instrucción continue permite forzar la repetición temprana de un ciclo omitiendo el código restante en el cuerpo del ciclo.
  • La instrucción return es básicamente igual que en C, C++. Se utiliza para devolver un valor y salir de un método.
  • La instrucción goto se sigue utilizando en C♯ a pesar de toda la polémica que esto conlleva.

 

Métodos

  • Todo método debe de ser parte de una clase, no existen métodos globales.De forma predeterminada, los parámetros se pasan por valor (se copia dicho valor).
  • El modificador ref fuerza a pasar los parámetros por referencia en vez de pasarlos por valor.
  • El modificador out es similar al modificador ref con una excepción: sólo se puede utilizar para pasar un valor fuera de un método. El método debe de asignar un valor al parámetro antes de que el método finalice.
  • Cuando ref y out modifican un parámetro de referencia, la propia referencia se pasa por referencia.
  • El modificador params sirve para definir un número variable de argumentos los cuales se implementan como una matriz. Ejemplo: public int maxVal(params int[] nums){...}, esta función se podría llamar así: maxVal(23,3,a,-12);.
  • Un método debe tener como máximo un único parámetro params y éste debe de ser el último.
  • Un método puede devolver cualquier tipo de datos, incluyendo tipos de clase.
  • Ya que en C# las matrices se implementan como objetos, un método también puede devolver una matriz (algo que se diferencia de C++ en que las matrices no son válidas como tipos de valores devueltos).

Clases y objetos

Varios puntos a tener en cuenta en C♯ con respecto a clases y objetos son los siguientes:
  • Una variable de objeto de cierta clase no almacena los valores del objeto sino su referencia (al igual que Java).
  • El operador de asignación no copia los valores de un objeto, sino su referencia a él (al igual que Java).
  • Un constructor tiene el mismo nombre que su clase y es sintácticamente similar a un método.
  • Un constructor no devuelve ningún valor.
  • Al igual que los métodos, los constructores también pueden ser sobrecargados.
  • Si no se especifica un constructor en una clase, se usa uno por defecto que consiste en asignar a todas las variables el valor de 0, null o false según corresponda.
  • Para crear un nuevo objeto se utiliza la siguiente sintaxis: variable = new nombre_clase();.
  • Un destructor se declara como un constructor, aunque va precedido por un signo de tilde ~.
  • Se emplea una desasignación de memoria de objetos no referenciados (recolección de basura), y cuando esto ocurre se ejecuta el destructor de dicha clase.
  • El destructor de una clase no se llama cuando un objeto sale del ámbito.
  • Todos los destructores se llamarán antes de que finalice un programa.
  •  La palabra clave this es un apuntador al mismo objeto en el cual se usa.
  • La palabra clave static hace que un miembro pertenezca a una clase en vez de pertener a objetos de dicha clase. Se puede tener acceso a dicho miembro antes de que se cree cualquier objeto de su clase y sin referencias a un objeto.
  • Un método static no tiene una referencia this.
  • Un método static puede llamar sólo a otros métodos static.
  • Un método static sólo debe tener acceso directamente a datos static.
  • Un constructor static se usa para inicializar atributos que se aplican a una clase en lugar de aplicarse a una instancia.
  • C♯ permite la sobrecarga de operadores con la palabra clave operator

Cadenas de caracteres

    El tipo de dato cadena se llama string.

  •     Realmente la palabra clave string es un alias de la clase System.String de la plataforma .NET.
  •     En C♯ las cadenas son objetos y no una matriz de caracteres, aun así, se puede obtener un carácter arbitrario de una cadena por medio de su índice (mas no modificarlo).
  •     La forma más común de construir una cadena es por medio de una literal o constante: string str = "Una cadena";
  •     El operador == determina si dos referencias hacen referencia al mismo objeto, pero al usar dicho operador con dos operandos tipo string se prueba la igualdad del contenido de las cadenas y no su referencia. Sin embargo, con el resto de los operadores relacionales, como < o >= se comparan las referencias.
  •     Se pueden concatenar (unir) dos cadenas mediante el operador +.

Compiladores

En la actualidad existen los siguientes compiladores para el lenguaje C♯:

  • Microsoft.NET framework SDK incluye un compilador de C♯, pero no un IDE.
  • Microsoft Visual Studio, IDE por excelencia de este lenguaje, versión 2002, 2003, 2005, 2008 y 2010(beta).
  •  #develop, es un IDE libre para C♯ bajo licencia LGPL, muy similar a Microsoft Visual C#.
  •  Mono, es una implementación GPL de todo el entorno .NET desarrollado por Novell. Como parte de esta implementación se incluye un compilador de C♯.
  •  Delphi 2006, de Borland Software Corporation.
  • dotGNU Portable.NET, de la Free Software Foundation.

 ejemplo


 

 

https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwj2oeD_0vjsAhVDrlkKHeKmDWwQFjATegQIGxAC&url=https%3A%2F%2Fwww.ecured.cu%2FLenguaje_de_Programaci%25C3%25B3n_C_Sharp&usg=AOvVaw0H2BcSzTRE3_6b77uo-bcf

Share:

Buscar este blog

Entradas Populares

Categorías