jueves, 11 de agosto de 2016

C# / C Sharp

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 (ECMA-334) . C# es uno de los lenguajes de programación diseñados para la infraestructura de lenguaje común.Su sintaxis básica deriva de C/C++ y utiliza el modelo de objetos de la plataforma .NET, similar al de Java, aunque incluye mejoras derivadas de otros lenguajes.
El nombre C Sharp fue inspirado por la notación musical, donde '#' (sostenido, en inglés sharp) indica que la nota (C es la nota do en inglés) es un semitono más alta, sugiriendo que C# es superior a C/C++. Además, el signo '#' se compone de cuatro signos '+' pegados.

Características de C#

  • C# es un lenguaje de programación simple pero eficaz, diseñado para escribir aplicaciones empresariales.
  • El lenguaje C# es una evolución de los lenguajes C y C++. Utiliza muchas de las características de C++ en las áreas de instrucciones, expresiones y operadores.
  • C# presenta considerables mejoras e innovaciones en áreas como seguridad de tipos, control de versiones, eventos y recolección de elementos no utilizados (liberación de memoria).
  • C# proporciona acceso a los tipos de API más comunes: .NET Framework, COM, Automatización y estilo C. Asimismo, admite el modo unsafe, en el que se pueden utilizar punteros para manipular memoria que no se encuentra bajo el control del recolector de elementos no utilizados.

Ventajas de C#

  • Declaraciones en el espacio de nombres: al empezar a programar algo, se puede definir una o más clases dentro de un mismo espacio de nombres. 
  • Tipos de datos: en C# existe un rango más amplio y definido de tipos de datos que los que se encuentran en C, C++ o Java. 

  • Atributos: cada miembro de una clase tiene un atributo de acceso del tipo público, protegido, interno, interno protegido y privado. 

  • Pase de parámetros: aquí se puede declarar a los métodos para que acepten un número variable de parámetros. De forma predeterminada, el pase de parámetros es por valor, a menos que se use la palabra reservada re, la cual indica que el pase es por referencia. 

  • Métodos virtuales y re definiciones: antes de que un método pueda ser re-definido en una clase base, debe declararse como virtual. El método re-definido en la subclase debe ser declarado con la palabra devover 
  • Propiedades: un objeto tiene intrínsecamente propiedades, y debido a que las clases en C# pueden ser utilizadas como objetos, C# permite la declaración de propiedades dentro de cualquier clase. 
  • Inicializador: un inicializador es como una propiedad, con la diferencia de que en lugar de un nombre de propiedad, un valor de índice entre corchetes se utiliza en forma anónima para hacer referencia al miembro de una clase. 
  • Control de versiones: C# permite mantener múltiples versiones de clases en forma binaria, colocándoles en diferentes espacios de nombres. Esto permite que versiones nuevas y anteriores de software puedan ejecutarse en forma simultánea. 

Desventajas de C#

  • Las desventajas que se derivan del uso de este lenguaje de programación son que en primer lugar se tiene que conseguir una versión reciente de Visual Studio .NET, por otra parte se tiene que tener algunos requerimientos mínimos del sistema para poder trabajar adecuadamente tales como contar con Windows NT 4 o superior, tener alrededor de 4 gigas de espacio libre para la pura instalación, etc. 


  • Además para quien no está familiarizado con ningún lenguaje de programación, le costará más trabajo iniciarse en su uso, y si se quiere consultar algún tutorial más explícito sobre la programación en C# se tendría que contar además con una conexión a Internet.

Métodos


Un método es una acción que puede realizar un objeto.


Para definir un método de una clase:
class SampleClass
{
    public int sampleMethod(string sampleParam)
    {
        // Insert code here
    }
}

Una clase puede tener varias implementaciones o sobrecargas del mismo método que se diferencian en el número de parámetros o de tipos de parámetro.
Para sobrecargar un método:
public int sampleMethod(string sampleParam) {};
public int sampleMethod(int sampleParam) {}
En la mayoría de los casos, un método se declara dentro de una definición de clase. Sin embargo, tanto Visual Basic como C# también admiten los métodos de extensión, que permiten agregar métodos a una clase existente fuera de la definición de la clase en sí.

Herencia

La herencia permite crear una nueva clase que reutiliza, extiende y modifica el comportamiento que se define en otra clase. La clase cuyos miembros se heredan se denomina clase base y la clase que hereda esos miembros se denomina clase derivada. Sin embargo, todas las clases de C# y Visual Basic heredan implícitamente de la clase Objeto que admite la jerarquía de clases .NET y proporciona servicios de bajo nivel a todas las clases.

Para heredar de una clase base:
class DerivedClass:BaseClass{}
De forma predeterminada, todas las clases se pueden heredar. Sin embargo, puede especificar si una clase no se debe usar como clase base o bien crear una clase que solo se pueda usar como clase base.
Para especificar que una clase no se puede usar como clase base:
public sealed class A { }
Para especificar que una clase se puede usar solo como clase base y no se pueden crear instancias de esta:
public abstract class B { }

Comandos de C#


  1. If-else (Referencia de C#) Una instrucción if identifica que sentencia setiene que ejecutar en función del valor de una expresión Bolean.
  2. While (Referencia de C#) La instrucción while ejecuta una instrucción o un bloque de instrucciones repetidamente hasta que una expresión especificada se evalúa como false.
  3. Break (Referencia de C#) La instrucción break permite terminar el bucle envolvente más cercano o la instrucción switch en la cual aparece.
  4. Switch (Referencia de C#) Una instrucción switch incluye una o más secciones switch. 
  5. Return (Referencia de C#) La instrucción return termina la ejecución del método en el que aparece y devuelve el control al método que realizó la llamada. También puede devolver un valor opcional. Si el método es del tipo void, la instrucción return se puede omitir.
  6. Throw (Referencia de C#) La instrucción throw se usa para indicar una situación anómala (excepción) durante la ejecución del programa. try-catch (Referencia de C#)
  7. try-catch consta de un bloque try seguido de una o más cláusulas catch, las cuales especifican controladores para diferentes excepciones. 
  8. default (Referencia de C#) La palabra clave default se puede utilizar en la instrucción switch o en código genérico
  9. for (Referenciade C#) Mediante un bucle for , puede ejecutar una instrucción o un bloque de instrucciones varias veces hasta que una expresión especificada se evalúe con false.
  10. foreach, in (Referencia de C#) La instrucción foreach se utiliza para recorrer la colección en iteración y obtener la información deseada, pero no se puede utilizar para agregar o quitar elementos de la colección de origen, ya que se pueden producir efectos secundarios imprevisibles.
  11. do (Referencia de C#) La instrucción do ejecuta una instrucción o un bloque de instrucciones repetidamente hasta que una determinada expresión se evalúa como false.
  12. continue (Referencia de C#) La instrucción de continue pasa el control a la siguiente iteración de mientras que agrega, de haga, de para, o la instrucción de foreach en la que aparece. 



Interpolación de cadenas en C#




  1. Interpolación de cadenas a vista de pájaro

Consiste en introducir valores de variables o expresiones en el interior de cadenas de texto sin usar los tradicionales mecanismos, molestos y propensos a errores, como la concatenación o el formateo con String. Format()

Y como un poco de código vale más que mil palabras, he ahí un ejemplo que creo ilustra bastante bien de qué estamos hablando: 

Interpolated strings at a glance 

Las cadenas interpoladas comienzan con el prefijo “$”, y pueden aparecer en los mismos lugares que una cadena de caracteres tradicional. Es decir, donde siempre hemos podido introducir una cadena de texto, podremos introducir ahora la nueva construcción $"something"




2. Parámetros en cadenas interpoladas

Cuando el compilador de C# encuentra una cadena precedida por el símbolo “$” entenderá que es una cadena con interpolación, y creará el string resultante sustituyendo las expresiones contenidas entre llaves por su valor evaluado en el ámbito local

Por ejemplo, en la siguiente porción de código se muestra el uso correcto de la variable local name y de la propiedad estática LastName, mientras que la propiedad age no puede referenciarse desde el método estático Main() por ser un miembro de instancia: 

Interpolation parameters must be in scope 

Si queremos introducir los caracteres de apertura o cierre de llaves en alguna de estas cadenas, debemos escaparlos introduciéndolos dos veces consecutivas: 

Curly braces must be scaped 



3. Intellisense, refactorings y errores en compilación

Visual Studio nos ayudará durante la codificación de estas cadenas gracias al soporte completo de intellisense en el interior de las expresiones interpoladas: 

Intellisense in string interpolation 

También estos parámetros en el interior de las cadenas de texto serán sensibles a refactorizaciones. Por ejemplo, si en el código anterior renombramos la variable name a fullName, el nuevo nombre será introducido también automáticamente en el interior de la cadena: 

Interpolated string parameters support refactorings 





4.Los parámetros pueden ser objetos IFormattable

Si parámetros introducidos en una cadena interpolada son objetos  Formattable, se invocará a su método ToString() para que sea él mismo el que se formatee: 

Interpolated strings with IFormattable parameters





5.La cultura por defecto es la del hilo actual

Si vamos a utilizar formateo, este detalle es importante: la cultura aplicable será la activa en el hilo de ejecución actual. 

String interpolation culture in C#