Friday, August 14, 2015

Algunas Aplicaciones del lenguaje C#

Tutoriales de C#

Visual Studio .NET 2003

Los tutoriales de C# proporcionan información general sobre el lenguaje e identifican las características más importantes. Cada tutorial comprende uno o varios programas de ejemplo. Los tutoriales explican el código de ejemplo y aportan información adicional de fondo. También incluyen un vínculo a los temas correspondientes de los ejemplos, donde se pueden descargar y ejecutar los programas de ejemplo.
Nota   Los tutoriales de C# no enseñan a crear una interfaz gráfica de usuario para un programa, como por ejemplo un formulario Windows Forms o una página de formularios Web Forms. Para comenzar a trabajar en esa área, vea los Tutoriales de Visual C#.


TutorialDescripciónNivel
Hola a todosMuestra una aplicación de tipo "Hola a todos".Sencillo
Parámetros de la línea de comandosMuestra el procesamiento sencillo de la línea de comandos, así como la indización de matrices.Sencillo
MatricesMuestra el uso de matrices.Sencillo
PropiedadesMuestra cómo se declaran y utilizan las propiedades, así como el uso de las propiedades abstractas.Sencillo
BibliotecasMuestra cómo utilizar las opciones del compilador para crear una biblioteca DLL a partir de varios archivos de código fuente, así como su uso en otros programas.Sencillo
Control de versionesMuestra el uso de override y new para la compatibilidad con el control de versiones.Sencillo
Clases de colecciónMuestra cómo crear clases de colección que pueden utilizarse conforeach.Intermedio
EstructurasMuestra cómo utilizar las estructuras en C#.Intermedio
IndizadoresMuestra cómo utilizar la notación de matrices para obtener acceso a un objeto.Intermedio
Propiedades indizadasMuestra cómo implementar una clase que utiliza propiedades indizadas. Las propiedades indizadas permiten utilizar una clase que representa una colección, semejante a una matriz, de diferentes tipos de elementos.Intermedio
Conversiones definidas por el usuarioMuestra cómo definir conversiones a o desde tipos definidos por el usuario.Intermedio
Sobrecarga de operadores
Muestra cómo las clases definidas por el usuario pueden sobrecargar operadores.
Intermedio
DelegadosMuestra cómo se declaran, asignan y combinan los delegados.Intermedio
EventosMuestra cómo utilizar los eventos en C#.Intermedio
Implementación explícita de interfacesMuestra cómo implementar explícitamente los miembros de interfaz.Intermedio
Métodos condicionalesEste tutorial trata sobre los métodos condicionales, los cuales proporcionan un poderoso mecanismo con el que las llamadas a métodos se pueden incluir u omitir dependiendo de si se ha definido o no un símbolo.Intermedio
Documentación XMLMuestra cómo documentar el código desarrollado usando XML.Intermedio
Invocación de la plataformaMuestra cómo llamar a invocaciones de plataforma (funciones exportadas de un archivo DLL) desde C#.Avanzado
Interoperabilidad COM, parte 1Muestra cómo utilizar C# para interoperar con objetos COM. Trata también un cliente C#.Avanzado
Interoperabilidad COM, parte 2Muestra cómo utilizar C# para interoperar con objetos COM. Trata también un servidor C#.Avanzado
AtributosEste tutorial muestra cómo crear clases de atributos personalizados, utilizarlas en el código y consultarlas a través del mecanismo de reflexión.Avanzado
SeguridadTrata de la seguridad en .NET Framework y muestra dos formas de modificar los permisos de seguridad en C#: las clases de permisos y los atributos de permisos.Avanzado
SubprocesamientoMuestra varias actividades con subprocesos, como la creación y ejecución de un subproceso, la sincronización e interacción entre subprocesos y el uso de un objeto de exclusión mutua (mutex).Avanzado
Código no seguroMuestra el uso de punteros.Avanzado
OLE DBMuestra el uso de OLE DB en C# conectando con una base de datos de Microsoft Access.







Avanzado

Reconocimiento de voz y texto en C# I




Comandos

Operadores

  • Los operadores aritméticos funcionan igual que en C y C++.
  • El resultado de los operadores relacionales y lógicos es un valor de tipo bool.
  • Los operadores de cortocircuito evalúan el segundo operando solo cuando es necesario.
  • Los operadores a nivel de bits no se pueden aplicar a tipos boolfloatdouble o decimal.




operadores de C#
Las operaciones en tipos enteros (como ==!=<>&| ) se suelen permitir en tipos de enumeración (enum).
En las secciones se enumeran los operadores de C# desde la precedencia más alta a la más baja. Los operadores de cada sección comparten el mismo nivel de precedencia.

Estos son los operadores de precedencia más alta. Tenga en cuenta que puede hacer clic en los operadores para ir a las páginas de detalles con ejemplos.
x.y: acceso a miembros.
x?.y: acceso a miembros condicional null. Devuelve null si el operando izquierdo es null.
f(x): invocación de función.
a[x]: indización de objeto agregado.
a?[x]: indización condicional null. Devuelve null si el operando izquierdo es null.
x++: incremento de postfijo. Devuelve el valor de x y, a continuación, actualiza la ubicación de almacenamiento con el valor de x que es uno mayor (normalmente agrega el entero 1).
x--: decremento de postfijo. Devuelve el valor de x; a continuación, actualiza la ubicación de almacenamiento con el valor de x que es uno menos (normalmente resta el entero 1).
New: creación de instancias de tipo.
Typeof: devuelve el objeto System.Type que representa el operando.
Checked: habilita la comprobación de desbordamiento para operaciones con enteros.
Unchecked: deshabilita la comprobación de desbordamiento para operaciones con enteros. Este es el comportamiento predeterminado del compilador.
default(T): devuelve el valor inicializado predeterminado de tipo T, null para tipos de referencia, cero para tipos numéricos y cero o null en miembros para tipos de struct.
Delegate: declara y devuelve una instancia de delegado.
Sizeof: devuelve el tamaño en bytes del operando de tipo.
->: desreferenciación del puntero combinada con acceso a miembros.

Estos operadores tienen mayor precedencia que los de la sección siguiente y menor que los de la anterior. Tenga en cuenta que puede hacer clic en los operadores para ir a las páginas de detalles con ejemplos.
+x: devuelve el valor de x.
-x: negación numérica.
!x: negación lógica.
~x: complemento bit a bit.
++x: incremento de prefijo. Devuelve el valor de x después de actualizar la ubicación de almacenamiento con el valor de x que es uno mayor (normalmente agrega el entero 1).
--x: decremento de prefijo. Devuelve el valor de x después de actualizar la ubicación de almacenamiento con el valor de x que es uno menos (normalmente resta el entero 1).
(T)x: conversión de tipos.
Await: espera una Task.
&x: dirección de.
*x: desreferenciación.

Estos operadores tienen mayor precedencia que los de la sección siguiente y menor que los de la anterior. Tenga en cuenta que puede hacer clic en los operadores para ir a las páginas de detalles con ejemplos.
x * y: multiplicación.
x / y: división. Si los operandos son enteros, el resultado es un entero que se trunca hacia cero (por ejemplo, -7 / 2 is -3).
x % y: módulo. Si los operandos son enteros, devuelve el resto de dividir x entre y. Si q = x / y y r = x % y, entonces x = q * y + r.

Estos operadores tienen mayor precedencia que los de la sección siguiente y menor que los de la anterior. Tenga en cuenta que puede hacer clic en los operadores para ir a las páginas de detalles con ejemplos.
x + y: suma.
x – y: resta.

Estos operadores tienen mayor precedencia que los de la sección siguiente y menor que los de la anterior. Tenga en cuenta que puede hacer clic en los operadores para ir a las páginas de detalles con ejemplos.
x << y: desplaza los bits a la izquierda y rellena con cero a la derecha.
x >> y: desplaza los bits a la derecha. Si el operando izquierdo es int o long, los bits de la izquierda se rellenan con el bit de signo. Si el operando izquierdo es uint o ulong, los bits de la izquierda se rellenan con cero.

Estos operadores tienen mayor precedencia que los de la sección siguiente y menor que los de la anterior. Tenga en cuenta que puede hacer clic en los operadores para ir a las páginas de detalles con ejemplos.
x < y: menor que (true si x es menor que y).
x > y: mayor que (true si x es mayor que y).
x <= y: menor o igual que.
x >= y: menor o igual que.
Is: compatibilidad de tipos. Devuelve true si el operando izquierdo evaluado se puede convertir al tipo especificado en el operando derecho (un tipo estático).
As: conversión de tipos. Devuelve el operando izquierdo convertido al tipo especificado por el operando derecho (un tipo estático), pero as devuelve null donde (T)x produciría una excepción.

Estos operadores tienen mayor precedencia que los de la sección siguiente y menor que los de la anterior. Tenga en cuenta que puede hacer clic en los operadores para ir a las páginas de detalles con ejemplos.
x == y: igualdad. De forma predeterminada, para los tipos de referencia distintos de string, devuelve igualdad de referencia (prueba de identidad). Sin embargo, los tipos pueden sobrecargar ==, por lo que si su intención es probar la identidad, es mejor usar el método ReferenceEquals en object.
x != y: distinto de. Vea el comentario de ==. Si un tipo sobrecarga ==, debe sobrecargar !=.

Este operador tiene mayor precedencia que el de la sección siguiente y menor que los de la anterior. Tenga en cuenta que puede hacer clic en el operador para ir a la página de detalles con ejemplos.
x & y: AND lógico o bit a bit. El uso con tipos enteros y tipos enum suele estar permitido.

Este operador tiene mayor precedencia que el de la sección siguiente y menor que el de la anterior. Tenga en cuenta que puede hacer clic en el operador para ir a la página de detalles con ejemplos.
x ^ y: XOR lógico o bit a bit. Por lo general puede usarlo con tipos enteros y tipos enum.

Este operador tiene mayor precedencia que el de la sección siguiente y menor que el de la anterior. Tenga en cuenta que puede hacer clic en el operador para ir a la página de detalles con ejemplos.
x | y: OR lógico o bit a bit. El uso con tipos enteros y tipos enum suele estar permitido.

Este operador tiene mayor precedencia que el de la sección siguiente y menor que el de la anterior. Tenga en cuenta que puede hacer clic en el operador para ir a la página de detalles con ejemplos.
x && y: AND lógico. Si el primer operando es false, C# no evalúa el segundo operando.

Este operador tiene mayor precedencia que el de la sección siguiente y menor que el de la anterior. Tenga en cuenta que puede hacer clic en el operador para ir a la página de detalles con ejemplos.
x || y: OR lógico. Si el primer operando es true, C# no evalúa el segundo operando.

Este operador tiene mayor precedencia que el de la sección siguiente y menor que el de la anterior. Tenga en cuenta que puede hacer clic en el operador para ir a la página de detalles con ejemplos.
x ?? y: devuelve x si no es null; de lo contrario, devuelve y.

Este operador tiene mayor precedencia que el de la sección siguiente y menor que el de la anterior. Tenga en cuenta que puede hacer clic en el operador para ir a la página de detalles con ejemplos.
t ? x : y: si la prueba t es true, evalúa y devuelve x; en caso contrario, evalúa y devuelve y.

Estos operadores tienen mayor precedencia que los de la sección siguiente y menor que el de la anterior. Tenga en cuenta que puede hacer clic en los operadores para ir a las páginas de detalles con ejemplos.
x = y: asignación.
x += y: incremento. Agregue el valor de y al valor de x, almacene el resultado en x y devuelva el nuevo valor. Si xdesigna un eventy debe ser una función adecuada que C# agregue como un controlador de eventos.
x -= y: decremento. Reste el valor de y del valor de x, almacene el resultado en x y devuelva el nuevo valor. Si xdesigna un eventy debe ser una función adecuada que C# quite como un controlador de eventos.
x *= y: asignación y multiplicación. Multiplique el valor de y por el valor de x, almacene el resultado en x y devuelva el nuevo valor.
x /= y: asignación y división. Divida el valor de x por el valor de y, almacene el resultado en x y devuelva el nuevo valor.
x %= y: asignación y módulo. Divida el valor de x por el valor de y, almacene el resto en x y devuelva el nuevo valor.
x &= y: asignación y AND. AND el valor de y con el valor de x, almacene el resultado en x y devuelva el nuevo valor.
x |= y: asignación y OR. OR el valor de y con el valor de x, almacene el resultado en x y devuelva el nuevo valor.
x ^= y: asignación y XOR. XOR el valor de y con el valor de x, almacene el resultado en x y devuelva el nuevo valor.
x <<= y: asignación y desplazamiento a la izquierda. Desplace el valor de x a la izquierda y lugares, almacene el resultado en x y devuelva el nuevo valor.
x >>= y: asignación y desplazamiento a la derecha. Desplace el valor de x a la derecha y posiciones, almacene el resultado en x y devuelva el nuevo valor.
=>: declaración lambda.

Los operadores aritméticos (+-*/) pueden producir resultados fuera del rango de valores posibles para el tipo numérico implicado. Para obtener detalles debe ir a la sección del operador en cuestión, pero en general:
  • El desbordamiento aritmético de enteros produce una OverflowException o descarta los bits más significativos del resultado. La división de enteros por cero siempre produce una DivideByZeroException.
  • El desbordamiento aritmético de punto flotante o la división por cero nunca producen una excepción, porque los tipos de punto flotante se basan en el estándar IEEE 754 y por tanto tienen disposiciones para representar el infinito y NaN (No es un número).
  • El desbordamiento aritmético decimal siempre produce una OverflowException. La división decimal por cero siempre produce una DivideByZeroException.
Cuando se produce el desbordamiento de enteros, lo que suceda dependerá del contexto de ejecución, que puede ser comprobado o no comprobado. En un contexto comprobado, se produce una OverflowExceptionEn un contexto no comprobado, se descartan los bits más significativos del resultado y la ejecución continúa. Por lo tanto, C# ofrece la posibilidad de controlar u omitir el desbordamiento.
Además de los operadores aritméticos, las conversiones de tipo entero a tipo entero también pueden provocar un desbordamiento (por ejemplo, la conversión de un long a un int) y están sujetas a ejecución comprobada o no comprobada. Sin embargo, los operadores bit a bit y los de desplazamiento nunca producen desbordamiento.

Introduction

El Lenguaje de Programacion C#

  • Que es el C#

C#1 (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 (ECMA-334) e ISO (ISO/IEC 23270). 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.

  • De donde proviende el nombre

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.2
Aunque C# forma parte de la plataforma .NET, ésta es una 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 Mono - DotGNU, el cual genera programas para distintas plataformas como Windows, Unix, Android, iOS, Windows Phone, Mac OS y GNU/Linux.

  • Historia

Durante el desarrollo de la plataforma .NET, las bibliotecas de clases fueron escritas originalmente usando un sistema de código gestionado llamado Simple Managed C (SMC). En enero de 1999, Anders Hejlsberg formó un equipo con la misión de desarrollar un nuevo lenguaje de programación llamado Cool (Lenguaje C orientado a objetos). Este nombre tuvo que ser cambiado debido a problemas de marca, pasando a llamarse C#.3 La biblioteca de clases de la plataforma .NET fue migrada entonces al nuevo lenguaje.
Hejlsberg lideró el proyecto de desarrollo de C#. Anteriormente, ya había participado en el desarrollo de otros lenguajes como Turbo Pascal, Delphi y J++.

Las Variables y Constantes


Las variables son identificadores asociados a valores. Se declaran indicando el tipo de dato que almacenará y su identificador.
Un identificador puede:
  • empezar por "_".
  • contener caracteres Unicode en mayúsculas y minúsculas (sensible a mayúsculas y minúsculas).
Un identificador no puede:
  • empezar por un número.
  • empezar por un símbolo, ni aunque sea una palabra clave.
  • contener más de 511 caracteres.
Las constantes son valores inmutables, y por tanto no se pueden cambiar.
const
Cuando se declara una constante con la palabra clave const, también se debe asignar el valor. Tras esto, la constante queda bloqueada y no se puede cambiar. Son implícitamente estáticas (static).

const double PI = 3.1415   CONSTANTE PI
readonly
A diferencia de const, no requiere que se asigne el valor al mismo tiempo que se declara. Pueden ser miembros de la instancia o miembros estáticos de la clase (static).
readondly double E    E= 2.71828