nuevo documento de microsoft word

13
Lenguaje de programación C# Los primeros rumores de que Microsoft estaba desarrollando un nuevo lenguaje de programación surgieron en 1998, haciendo referencia a un lenguaje que entonces llamaban COOL y que decían era muy similar a Java. En junio de 2000, Microsoft despejó todas las dudas liberando la especificación de un nuevo lenguaje llamado C#. A esto le siguió rápidamente la primera versión de prueba del entorno de desarrollo estándar (SDK) .NET, que incluía un compilador de C#. El nuevo lenguaje estaba diseñado por Anders Hejlsberg ( creador de Turbo Pascal y arquitecto de Delphi ), Scott Wiltamuth y Peter Golde. Entonces describieron el lenguaje como "...simple, moderno, orientado a objetos, de tipado seguro y con una fuerte herencia de C/C++". Una muestra de esta nueva tecnología es el nuevo lenguaje de programación C#. Este nuevo lenguaje orientado a objetos con énfasis en Internet se basa en las lecciones aprendidas de los lenguajes C, C++, Java y Visual Basic. Por ello se trata de un lenguaje que combina todas las cualidades que se pueden esperar de un lenguaje moderno (orientación a objetos, gestión automática de memoria, etc.) a la vez que proporciona un gran rendimiento. La plataforma .NET La plataforma .NET es una plataforma de desarrollo de software con especial énfasis en el desarrollo rápido de aplicaciones, la independencia de lenguaje y la transparencia a través de redes. La plataforma consta de las siguientes partes: Un conjunto de lenguajes de programación (C#, J#, JScript, C++ gestionado, Visual Basic.NET, y otros proyectos independientes). Un conjunto de herramientas de desarrollo (entre ellos Monodevelop o Visual Studio.NET de Microsoft ) Una libreria de clases amplia y común para todos los lenguajes. Un sistema de ejecucion de Lenguaje Común. (CLR). Un conjunto de servidores .NET Un conjunto de servicios .NET Dispositivos electrónicos con soporte .NET (PDA,Celulares, etc)

Upload: juan-alarcon

Post on 15-Nov-2015

215 views

Category:

Documents


0 download

TRANSCRIPT

Lenguaje de programacin C#

Los primeros rumores de que Microsoft estaba desarrollando un nuevo lenguaje de programacin surgieron en 1998, haciendo referencia a un lenguaje que entonces llamaban COOL y que decan era muy similar a Java. En junio de 2000, Microsoft despej todas las dudas liberando la especificacin de un nuevo lenguaje llamado C#. A esto le sigui rpidamente la primera versin de prueba del entorno de desarrollo estndar (SDK) .NET, que inclua un compilador de C#. El nuevo lenguaje estaba diseado por Anders Hejlsberg ( creador de Turbo Pascal y arquitecto de Delphi ), Scott Wiltamuth y Peter Golde. Entonces describieron el lenguaje como "...simple, moderno, orientado a objetos, de tipado seguro y con una fuerte herencia de C/C++".Una muestra de esta nueva tecnologa es el nuevo lenguaje de programacin C#. Este nuevo lenguaje orientado a objetos con nfasis en Internet se basa en las lecciones aprendidas de los lenguajes C, C++, Java y Visual Basic. Por ello se trata de un lenguaje que combina todas las cualidades que se pueden esperar de un lenguaje moderno (orientacin a objetos, gestin automtica de memoria, etc.) a la vez que proporciona un gran rendimiento.

La plataforma .NETLa plataforma .NET es una plataforma de desarrollo de software con especial nfasis en el desarrollo rpido de aplicaciones, la independencia de lenguaje y la transparencia a travs de redes.La plataforma consta de las siguientes partes: Un conjunto de lenguajes de programacin (C#, J#, JScript, C++ gestionado, Visual Basic.NET, y otros proyectos independientes). Un conjunto de herramientas de desarrollo (entre ellos Monodevelop o Visual Studio.NET de Microsoft ) Una libreria de clases amplia y comn para todos los lenguajes. Un sistema de ejecucion de Lenguaje Comn. (CLR). Un conjunto de servidores .NET Un conjunto de servicios .NET Dispositivos electrnicos con soporte .NET (PDA,Celulares, etc) Los puntos fuertes de la plataforma son: Independencia de lenguaje Todos los lenguajes que conformen con los estndares .NET, sin importar cual, podrn interoperar entre s de forma totalmente transparente, las clases podrn ser heredadas entre unos lenguajes y otros, y se podr disfrutar de polimorfismo entre lenguajes. Por ejemplo, si yo tengo una clase en C#, esta clase podr ser heredada y utilizada en Visual Basic o JScript o cualquier lenguaje .NET. Todo esto es posible por medio de una de las caractersticas de .NET llamado Common Type System (CTS). Tambin tiene la cualidad de que se pueden incluir ms lenguajes a la plataforma. En la actualidad existen proyectos independientes de incluir PHP, Python, Ada y otros lenguajes en la plataforma. Librera de clases comn Ms de 4000 clases, objetos y mtodos incluidos en la plataforma .NET estn disponibles para todos los lenguajes. Multiplataforma Cuando un programa es compilado, no es compilado en un archivo ejecutable sino en un lenguaje intermedio llamado Lenguaje Intermedio (IL) el cual podr ser ejecutado por el CLR (Common Language Runtime) en la plataforma en que el CLR est disponible (hasta el da de hoy Microsoft solamente tiene un CLR para los sistemas operativos Windows, pero el proyecto Mono (www.mono-project.com) y dotGNU (www.dotGNU.org) han puesto a disposicin un CLR para GNU/Linux, MacOS y muchas otras plataformas). Los sistemas operativos Windows XP o superiores incluyen el CLR nativamente y SuSE Linux 9.3 o superior planea incorporar el CLR (Mono) en su distribucin lo que quiere decir que un programa .NET podr ser compilado y ejecutado en cualquiera de estas plataformas, o en cualquier plataforma que incluya un CLR. El CLR compilar estos archivos IL nuevamente en cdigo de mquina en un proceso que se conoce como JIT (justo a tiempo) el cual se ejecutar cuando se requiera. Este proceso producir cdigo de mquina bien eficiente que se reutilizar si es que hubiera cdigo que se repitiera, haciendo que los programas sean ejecutados muy eficientemente. El CRL Windows Forms, Web Forms, Web Services La plataforma .NET incluye un conjunto de clases especial para datos y XML que son la base de 3 tecnologas claves: Servicios Web (Web Services), Web Forms, y Windows Forms los cuales son poderosas herramientas para la creacin de aplicaciones tanto para la plataforma como para el Web. Estandarizacin Adems de los mritos tcnicos, una de las razones del xito de la plataforma .NET ha sido por el proceso de estandarizacin que Microsoft ha seguido (y que ha sorprendido a ms de uno). Microsoft, en lugar de reservarse todos los derechos sobre el lenguaje y la plataforma, ha publicado las especificaciones del lenguaje y de la plataforma, que han sido posteriormente revisadas y ratificadas por la Asociacin Europea de Fabricantes de Computadoras (ECMA). Esta especificacin (que se puede descargar libremente de Internet) permite la implementacin del lenguaje C# y de la plataforma .NET por terceros, incluso en entornos distintos de Windows.

Un resmen introductorio sobre el lenguaje C#[editar]El lenguaje es muy sencillo, sigue el mismo patrn de los lenguajes de programacin modernos. Incluye un amplio soporte de estructuras, componentes, programacin orientada a objetos, manipulacin de errores, recoleccin de basura, etc, que es construido sobre los principios de C++ y Java. Como sabris, las clases son la base de los lenguajes de programacin orientados a objetos, lo cual permite extender el lenguaje a un mejor modelo para solucionar problemas. C# contiene las herramientas para definir nuevas clases, sus mtodos y propiedades, al igual que la sencilla habilidad para implementar encapsulacin, herencia y polimorfismo, que son los tres pilares de la programacin orientada a objetos. C# tiene un nuevo estilo de documentacin XML que se incorpora a lo largo de la aplicacin, lo que simplifica la documentacin en lnea de clases y mtodos. C# soporta tambin interfaces, una forma de estipular los servicios requeridos de una clase. Las clases en C# pueden heredar de un padre pero puede implementar varias interfaces. C# tambin provee soporte para estructuras, un concepto el cual ha cambiado signifivamente desde C++. Una estructura es un tipo restringido que no exige tanto del sistema operativo como una clase. Una estructura no puede heredar ni dar herencias de clases pero puede implementar una interfaz. C# provee caractersticas de componentes orientados, como propiedades, eventos y construcciones declaradas (tambin llamados atributos). La programacin orientada a componentes es soportada por el CLR. C# provee soporte para acceder directamente a la memoria usando el estilo de punteros de C++ y mucho ms.C# frente a Java[editar]C# y Java son lenguajes similares, de sintaxis basada en C/C++, orientados a objetos, y ambos incluyen las caractersticas ms importantes de los lenguajes modernos, como son la gestin automtica de memoria y la compilacin a cdigo intermedio. Pero por supuesto, tambin hay diferencias.Una de las diferencias ms importantes es que C# es mucho ms cercano a C++ en cuanto a diseo se refiere. C# toma casi todos sus operadores, palabras reservadas y expresiones directamente de C++. Tambin se han mantenido algunas caractersticas que en Java se han desestimado. Por ejemplo, la posibilidad de trabajar directamente con direcciones de memoria. Si bien tanto Java como .NET proporcionan gestin automtica de memoria, en C# es posible usar lo que se denomina "cdigo no seguro". Cuando se usa cdigo no seguro en C# es posible operar con punteros de forma muy similar a como se hara en C/C++, pero el cdigo que utiliza punteros se queda marcado como no seguro y no se ejecuta en entornos en los que no tiene permisos.C# frente a C++[editar]Puesto que C# se ejecuta en una mquina virtual, sta se hace cargo de la gestin de memoria y por lo tanto el uso de punteros es mucho menos importante en C# que en C++. C# tambin es mucho ms orientado a objetos, hasta el punto de que todos los tipos usados derivan en ltima instancia el tipo 'object'. Adems, muchos tipos se usan de forma distinta. Por ejemplo, en C# se comprueban los lmites de los arrays antes de usarlos, evitando as que se pueda escribir pasado el final del vector.Al igual que Java, C# renuncia a la idea de herencia mltiple de clases presente en C++. Sin embargo, referido a clases, C# implementa 'propiedades' del tipo de las que existen en Visual Basic, y los mtodos de las clases son accedidos mediante '.' en lugar de '::'.Por qu C#?[editar]La plataforma .NET acepta varios lenguajes. Por ahora, C#, Visual Basic, C++ gestionado, Nemerle, FORTRAN, Java, Python, etc. , y con capacidad para aceptar prcticamente cualquier lenguaje. Entonces la pregunta es, porqu se eligi C# en lugar de cualquier otro lenguaje?.La razn fundamental es que C# se dise para la plataforma .NET y es capaz de utilizar todo su potencial. Tambin es cierto que es un lenguaje "limpio" en el sentido de que al no tener que proporcionar compatibilidad hacia atrs se ha tenido ms libertad en el diseo y se ha puesto especial hincapi en la simplicidad. Por ejemplo, en C# hay un tipo de clase y siempre se le aplica el recolector de basura mientras que en C++ gestionado hay dos tipos de clases, una a la que se aplica el recolector y otra a la que no.

https://msdn.microsoft.com/es-es/library/67ef8sbd.aspx

MAINEl mtodoMaines el punto de entrada de una aplicacin de consola de C# o una aplicacin para Windows.(Las bibliotecas y los servicios no requieren un mtodoMaincomo punto de entrada.)Cuando se inicia la aplicacin, el mtodoMaines el primer mtodo que se invoca.En un programa de C#, slo puede haber un punto de entrada.Si tiene ms de una clase con un mtodoMain, debe compilar el programa con la opcin del compilador/mainpara especificar qu mtodoMainse va a utilizar como punto de entrada

TiposC# es un lenguaje fuertemente tipado.Todas las variables y constantes tienen un tipo, al igual que toda expresin que da como resultado un valor.Cada firma de mtodo especifica un tipo para cada parmetro de entrada y para el valor devuelto.La biblioteca de clases .NET Framework define un conjunto de tipos numricos integrados y tipos ms complejos que representan una amplia variedad de construcciones lgicas, como el sistema de archivos, conexiones de red, colecciones y matrices de objetos y fechas.Un programa tpico de C# usa los tipos de la biblioteca de clases, as como tipos definidos por el usuario que modelan los conceptos especficos del dominio problemtico del programa.La informacin almacenada en un tipo puede incluir lo siguiente: El espacio de almacenamiento que requiere una variable del tipo. Los valores mximo y mnimo que puede representar. Los miembros (mtodos, campos, eventos, etc.) que contiene. El tipo base del que hereda. La ubicacin donde se asignar la memoria para las variables en tiempo de ejecucin. Los tipos de operaciones permitidos.

Tipos integradosC# proporciona un conjunto estndar de tipos numricos integrados para representar enteros, valores de punto flotante, expresiones Boolean, caracteres de texto, valores decimales y otros tipos de datos.Tambin hay tiposobjectystringintegrados.Dichos tipos estn disponibles para que los utilice en cualquier programa de C#.Para obtener ms informacin sobre los tipos integrados, veaTablas de referencia para tipos (Referencia de C#).

Tipo de C#Tipo de .NET Framework

boolSystem.Boolean

byteSystem.Byte

sbyteSystem.SByte

charSystem.Char

decimalSystem.Decimal

doubleSystem.Double

floatSystem.Single

intSystem.Int32

uintSystem.UInt32

LongSystem.Int64

ulongSystem.UInt64

objectSystem.Object

shortSystem.Int16

ushortSystem.UInt16

stringSystem.String

Tipos personalizadosLas construccionesstruct,class,interfaceyenumse utilizan para crear sus propios tipos personalizados.La biblioteca de clases de .NET Framework en s es una coleccin de tipos personalizados proporcionada por Microsoft que puede utilizar en sus propias aplicaciones.De forma predeterminada, los tipos usados con mayor frecuencia en la biblioteca de clases estn disponibles en cualquier programa de C#.Otros solo estn disponibles cuando se agrega explcitamente una referencia del proyecto al ensamblado en el que se definen.Una vez que el compilador incluye una referencia al ensamblado, puede declarar variables (y constantes) de los tipos declarados en dicho ensamblado en el cdigo fuente.Para obtener ms informacin, veaBiblioteca de clases de .NET Framework.

Tipos de valorLos tipos de valor se derivan deSystem::ValueType, que a su vez se deriva deSystem::Object.Los tipos que se derivan deSystem::ValueTypetienen un comportamiento especial en CLR.Las variables de tipo de valor contienen directamente sus valores, lo que significa que la memoria se asigna insertndola en cualquier contexto en el que se declare la variable.En las variables de tipo de valor no se produce una asignacin de memoria independiente en el montn ni una sobrecarga de recoleccin de elementos no utilizados.Hay dos categoras de tipos de valor:structyenum.Los tipos numricos integrados son structs con propiedades y mtodos a los que puede tener acceso:C#// Static method on type Byte.byte b = Byte.MaxValue;

C#byte num = 0xA;int i = 5;char c = 'Z';La palabra clavestructse usa para crear sus propios tipos de valor personalizados.Normalmente, un struct se utiliza como contenedor de un pequeo conjunto de variables relacionadas, como se muestra en el ejemplo siguiente:C#

public struct CoOrds{ public int x, y;

public CoOrds(int p1, int p2) { x = p1; y = p2; }}Tipos de referenciaUn tipo que se define comoclase,delegado, matriz ointerfazes untipo de referencia.Al declarar una variable de un tipo de referencia en tiempo de ejecucin, la variable contiene el valornullhasta que se crea explcitamente una instancia del objeto mediante el operadornewo se le asigna un objeto creado en otro lugar mediantenew, como se muestra en el siguiente ejemploC#MyClass mc = new MyClass();MyClass mc2 = mc;Tipos de valores literalesEn C#, los valores literales reciben un tipo del compilador.Para especificar el tipo de un literal numrico, anexe una letra al final del nmero.Por ejemplo, para especificar que el valor 4.56 debe tratarse como tipo flotante, anexe una "f" o "F" despus del nmero:4.56f.Si no se anexa ninguna letra, el compilador inferir un tipo para el literal.Para obtener ms informacin sobre los tipos que pueden especificarse con sufijos de letras, vea las pginas de referencia de los tipos individuales enTipos de valor (Referencia de C#).Tipos genricosUn tipo se puede declarar con uno o variosparmetros de tipoque actan como marcador de posicin del tipo real (eltipo concreto) que proporcionar el cdigo cliente al crear una instancia del tipo.Estos tipos se denominantipos genricos.Por ejemplo, el tipo de .NET FrameworkSystem.Collections.Generic::Listtiene un parmetro de tipo al que, por convencin, se le asigna el nombreT.

Tipos implcitos, tipos annimos y tipos que aceptan valores NULLComo ya se ha mencionado anteriormente, puede indicar el tipo implcito de una variable local (pero no de los miembros de clase) mediante la palabra clavevar.La variable sigue recibiendo un tipo en tiempo de compilacin, pero el tipo lo proporciona el compilador.Para obtener ms informacin, veaVariables locales con asignacin implcita de tipos (Gua de programacin de C#).En algunos casos, es conveniente crear un tipo con nombre para conjuntos sencillos de valores relacionados que no estn destinados a almacenarse o pasarse fuera de los lmites del mtodo.Para este fin, puede creartipos annimos.Para obtener ms informacin, consulteTipos annimos (Gua de programacin de C#).Los tipos de valor normales no pueden tener el valornull.Sin embargo, puede crear tipos de valor que acepten valores NULL si anexa?despus del tipo.Por ejemplo,int?es un tipointque tambin puede tener el valornull.En CTS, los tipos que aceptan valores NULL son instancias del tipo de struct genricoSystem::Nullable.Dichos tipos resultan especialmente tiles al pasar datos desde y hacia bases de datos en las que los valores numricos pueden ser null.Para obtener ms informacin, veaTipos que aceptan valores NULL (Gua de programacin de C#).

MatricesPuede almacenar distintas variables del mismo tipo en una estructura de datos de matriz.Para declarar una matriz especifique el tipo de sus elementos.

Informacin general sobre las matricesUna matriz tiene las propiedades siguientes: Una matriz puede serunidimensional,multidimensionaloescalonada. El nmero de dimensiones y la longitud de cada dimensin se establecen cuando se crea la instancia de la matriz.Estos valores no se pueden cambiar durante la duracin de la instancia. Los valores predeterminado de los elementos numricos de matriz se establece en cero y el de los elementos de referencia se establece en null. Una matriz escalonada es una matriz de matrices y por consiguiente sus elementos son tipos de referencia y se inicializan ennull. Las matrices se indizan basadas en cero: una matriz connelementos se indiza desde0hastan-1. Los elementos de una matriz pueden ser de cualquier tipo, incluido el tipo matriz. Los tipos de matriz sontipos de referenciaderivados del tipo base abstractoArray.Puesto que este tipo implementaIEnumerableeIEnumerable, puede utilizar la iteracinforeachen todas las matrices de C#.Cadenas (Gua de programacin de C#)Visual Studio 2013Otras versiones

Una cadena es un objeto de tipoStringcuyo valor es texto.Internamente, el texto se almacena como una coleccin secuencial de solo lectura de objetosChar.Al final de una cadena de C# no hay un carcter null de terminacin; por lo tanto, una cadena de C# puede contener cualquier nmero de caracteres null incrustados ('\0').La propiedadLengthde una cadena representa el nmero de objetosCharque contiene, no el nmero de caracteres Unicode.Para obtener acceso a los puntos de cdigo Unicode individuales de una cadena, utilice el objetoStringInfo.

string frente aSystem.StringEn C#, la palabra clavestringes un alias deString.Por lo tanto,Stringystringson equivalentes y puede utilizar la convencin de nomenclatura que prefiera.La claseStringproporciona numerosos mtodos para crear, manipular y comparar cadenas de forma segura.Adems, el lenguaje C# sobrecarga algunos operadores para simplificar operaciones comunes de las cadenas.Para obtener ms informacin sobre la palabra clave, veastring (Referencia de C#).Para obtener ms informacin sobre el tipo y sus mtodos, veaString.

Inmutabilidad de los objetos de cadenaLos objetos de cadena soninmutables, es decir, no pueden modificarse una vez creados.Todos los mtodosStringy los operadores de C# que parecen modificar una cadena, en realidad devuelven los resultados en un nuevo objeto de cadena.En el ejemplo siguiente, cuando el contenido des1ys2se concatena para formar una sola cadena, las dos cadenas originales no se modifican.El operador+=crea una nueva cadena que contiene el contenido combinado.Ese nuevo objeto se asigna a la variables1y el objeto original asignado as1se libera para la recoleccin de elementos no utilizados, ya que ninguna otra variable contiene una referencia a l.

Secuencias de escape de cadenaSecuencia de escapeNombre del carcterCodificacin Unicode

\'Comilla simple0x0027

\"Comilla doble0x0022

\\Barra diagonal inversa0x005C

\0Null0x0000

\aAlerta0x0007

\bRetroceso0x0008

\fAvance de pgina0x000C

\nNueva lnea0x000A

\rRetorno de carro0x000D

\tTabulacin horizontal0x0009

\USecuencia de escape Unicode para pares suplentes.\Unnnnnnnn

\uSecuencia de escape Unicode\u0041 = "A"

\vTabulacin vertical0x000B

\xSecuencia de escape Unicode similar a "\u" a excepcin de la longitud variable.\x0041 = "A"

Nota

En tiempo de compilacin, las cadenas textuales se convierten en cadenas normales con las mismas secuencias de escape.As, si aparece una cadena textual en la ventana Inspeccin del depurador, ver los caracteres de escape agregados por el compilador, no la versin literal del cdigo fuente.Por ejemplo, la cadena textual @"C:\files.txt" aparecer como "C:\\files.txt" en la ventana Inspeccin.

Cadenas, mtodos de extensin y LINQDado que el tipoStringimplementaIEnumerable, puede utilizar los mtodos de extensin definidos en la claseEnumerableen las cadenas.Para evitar el desorden visual, estos mtodos se excluyen de IntelliSense para el tipoString, pero estn disponibles de todas formas.Tambin puede utilizar expresiones de consulta LINQ en las cadenas.Para obtener ms informacin, veaLINQ y cadenas.