Las siguientes secciones hacen un rápido repaso a algunas de las características de C#. Si no estas familiarizado con alguno de estos conceptos, no te preocupes.
Clases
Todo el código y los datos en C# deben ser incluidos en una clase. NO puede definir una variable fuera de una clase y no pueden escribir ningún código que no este en una clase. Las clases pueden tener constructores, que se ejecutan cuando se crea un objeto de la clase, y un destructor, que se ejecuta cuando un objeto de la clase es destruido. Las clases admiten herencia simples y todas las clases derivan al final de una clase base llamado objeto. C# admite técnicas de versiones para ayudar a que sus clases evolucionen con el tiempo mientras mantienen la compatibilidad con código que use versiones anteriores de sus clases.
C# permite agrupar sus clases en una colección de clases llamado espacio de nombre. Los espacios de nombre tienen nombres y pueden servir de ayuda para organizar colecciones de clases en agrupaciones lógicas.
Tipos de Datos
C# permite trabajar con dos tipos de datos: de valor y de referencia. Los de valor contienen valores reales. Los de referencia contienen referencias a valores almacenados en algún lugar de la memoria. Los tipos primitivos como char, int y float, junto con los valores y estructuras comentados, son tipos de valor. Los tipos de referencia tienen variables que tratan con objetos y matrices. C# viene con tipos de referencia predefinidos (object y string), junto con tipos de valor predefinidos(sbyte, shor, int, long, byte, ushort, uint, ulong, float, double, bool, char y decimal). También puede definir en el código sus propios tipos de valor y referencia. Todos los tipos de valor y de referencia derivan en ultima instancia de un tipo base llamado object.
C# permite convertir un valor de un tipo en un valor de otro tipo. Puede trabajar con conversiones implícitas y explicitas. Las conversiones implícitas siempre funcionan y nunca pierden información (por ejemplo, puede convertir un int en un long sin perder ningún dato porque un long es mayor que un int). La conerversiones explicitas puede producir perdida de datos (por ejemplo, convertir un long en un int puede producir perdida de datos por que un long puede contener valores mayores que un int). Debe escribir un operador cast en el código para que se produzca una conversión explicita.
En C# puede trabajar con matrices unidimensionales y mutidimensionales. Las matrices multidimensionales pueden ser rectangulares en las que cada una de las matrices tiene las misma dimensiones o escalonadas en las que cada una de las matrices puede tener diferentes dimensiones.
Funciones
Una función es un fragmento de código que puede ser invocado y que puede o no devolver al código que lo invoco en un principio. Un ejemplo de una función podría ser la función FullName.. Una función suele asociarse a fragmentos de código que devuelven información, mientras que un método no suele devolver información.
Sin embargo, para nuestros propósitos, generalizamos y nos referimos a las dos como funciones.
Las funciones pueden tener cuatro tipos de parámetros:
- Parámetros de Entrada: tiene valores que son enviados a la función, pero la función no puede cambiar esos valores.
- Parámetros de Salida: no tiene valor cuando son enviados a la función, pero la función puede darles un valor y enviar el valor de vuelta al invocador.
- Parámetros de referencia: introducen una referencia en otro valor. Tienen un valor de entrada para la función y ese valor puede ser cambiado dentro de la función.
- Parámetro Params: definen un numero variable de argumentos en una lista.
C# y el CLR trabajan juntos para brindar gestión de memoria automática. No necesita escribir código que diga "asigna suficiente memoria para un numero entero" o "libera la memoria que esta usando este objeto". El CLR monitoriza el uso de memoria y recupera automáticamente mas cuando la necesita. También libera memoria automáticamente mas cuando la necesita. También libera memoria automáticamente cuando detecta que ya no esta siendo usada (esto también se conoce como recolección de objeto no utilizados).
C# proporciona varios operadores que le permiten escribir expresiones matemáticas y de bits. Muchos (pero no todos) de estos operadores pueden ser redefinidos, permitiendole cambiar de forma en que trabajan estos operadores.
C# admite una larga lista de expresiones que le permiten definir varias ritas de ejecución dentro del código. Las instrucciones de flujo de control que usan palabras clave como if, stwith, while, for, break y continue permiten al código bifurcarse por caminos diferentes, dependiendo de los valores de sus variables. Las clases pueden contener código y datos. Cada miembro de una clases tiene algo llamado ámbito de accesibilidad, que define la visibilidad del miembro con respecto a otros objeto. C# admite los ámbitos de accesibilidad public, protected, internal, protected internal y private.
Variables
Las variables pueden ser definidas como constantes. Las constantes tiene valores que no pueden cambiar durante la ejecución del código. Por ejemplo, el valor de pi es una buena muestra de una constante porque el valor no cambia a medida que el código se ejecuta. Las declaraciones de tipo de enumeración especifican un nombre de tipo para un grupo de constantes relaciones. Por ejemplo, puede definir una enumeración de planetas con valores de Mercurio, Venus, Tierra, Marte, Júpiter, Saturno, Urano, Neptuno y Pluton, y usar estos nombres en el código. Usando los nombres de enumeraciones en el código hace que sea mas fácil leerlo que si usara un numero para representar a cada planeta.
C# incorpora un mecanismo para definir y procesar eventos. Si escribe una clase que realiza una operación muy larga, quizás quiera convocar un evento e incluirlo en el código, lo que permite que se les pueda avisar cuando haya acabado su operación. El mecanismo de control de eventos en C# usa delegados, que son variables que se refieren a una función.
Si la clase contiene un conjunto de valores, los clientes quizás quieran acceder a los valores como si la clase fuera una matriz. Puede conseguirlo escribiendo un fragmento de código conocido como indexador. Suponga que escribe una clase llamada ArcoIris, por ejemplo, que contenga el conjunto de los colores del arco iris. Los visitantes querrán escribir MiArcoIris[0] para recuperar el primer color del arco iris. Puede escribir un indexador en la clase ArcoIris para definir lo que se debe devolver el visitante acceda a esa clase, como si fuera una matriz de valores.
Interfaces
C# admite interfaces, que son grupos de propiedades, métodos y eventos que especifican un conjunto de funcionalidad. Las clases C# pueden implementar interfaces que informan a los usuarios de que la clase admite el conjunto de funcionalidades documentado por la interfaz. Puede desarrollar complementaciones de interfaces sin interferir con ningún código existente. Una vez que la interfaz ha sido publicada, no se puede modificar, pero puede evolucionar mediante herencia. Las clases C# pueden implementar muchas interfaces que aunque las clases solo pueden derivarse de una clase base.
Atributos
Atributos aportan información adicionar sobre su clase CLR. Antes, si quería que la clase fuera auto descriptiva, tenia que seguir un enfoque sin conexión, en el que la documentación fuera almacenada en archivos externo como un archivo IDl o incluso archivos HTML. Los atributos solucionan este problema permitiendo al programador vincular información a las clases (cualquier tipo de información). Por ejemplo, puede usar un atributo para insertar información de documentación en una clase, explicando como debe actuar al ser usada. Las posibilidades son infinitas y esa es la razón por la que Microsoft incluye tantos atributo predefinidos en .NET Framework.
Fuente: Aqui
No hay comentarios:
Publicar un comentario