Está en la página 1de 35

Reseña

Microsoft Visual C# es un lenguaje de programación sencillo pero potente, destinado sobre todo a los desarrolladores de aplicaciones que utilicen Microsoft .NET Framework. Hereda muchas de las mejores características de C++ y de Microsoft Visual Basic, pero sin casi ninguno de sus anacronismos e inconsistencias; lo que da lugar a un lenguaje más claro y lógico. En este libro aprenderá paso a paso a construir aplicaciones con Visual C# 2010 y Microsoft .NET Framework 4.0. Es una guía idónea para aquéllos que cuentan con conocimientos básicos de programación, quienes encontrarán numerosos ejercicios y ejemplos prácticos que les permitirán dominar todas las características del lenguaje C# y crear aplicaciones y componentes para Windows.

Ficha del libro
           Colección: PASO A PASO Autor: John Sharp Nº de páginas: 944 Formato: Papel Tamaño: 18 x 23 I.S.B.N: 978-84-415-2824-6 Código Comercial: 2301538 Precio sin IVA: 70,58€ Precio con IVA: 73,40€ Fecha de Publicación: Octubre 2010 Nivel: Básico/Medio

C Sharp
El título de este artículo se muestra incorrectamente debido a limitaciones técnicas. El título correcto es C#.

C#

Desarrollador(es)

Microsoft http://www.microsoft.com/net/

Información general

Extensiones comunes

.cs

Paradigma

Multiparadigma:estructurado, imperativo,orientado a objetos,dirigido por eventos,funcional, genérico,reflexivo

Apareció en

2000

Diseñado por

Microsoft

Última versión estable

5.0 (15 de agosto de 2012; hace 9 meses)

Tipo de dato

Estático, dinámico,fuerte, seguro, nominal

Implementaciones Microsoft .NET, Mono,DotGNU

Dialectos

Cω, Spec Sharp, Polyphonic C#

Influido por

Java, C++, Eiffel, Modula-3, Pascal

Ha influido a

D, F#, Java 5, Vala

Sistema operativo Multiplataforma

C# (pronunciado si sharp en inglés) es un lenguaje de programación orientado a objetosdesarrollado 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. El nombre C Sharp fue inspirado por la notación musical, donde '#' (sostenido, en ingléssharp) 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.1 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.

las bibliotecas de clases fueron escritas originalmente usando un sistema de código gestionado llamado Simple Managed C (SMC).J++ y Embarcadero Delphi. pasando a llamarse C#. Anteriormente. ya participó en el desarrollo de otros lenguajes como Turbo Pascal. Tipos de datos[editar] C# contiene dos categorías generales de tipos de datos integrados: tipos de valor y tipos de referencia. En enero de 1999.NET. El término tipo de valorindica que esos tipos contienen directamente sus valores. Tipos para definir números enteros: . Hejlsberg lideró el proyecto de desarrollo de C#. Este nombre tuvo que ser cambiado debido a problemas de marca.1 En castellano 16. Anders Hejlsberg formó un equipo con la misión de desarrollar un nuevo lenguaje de programación llamado Cool (C orientado a objetos).2 En inglés Historia[editar] Durante el desarrollo de la plataforma .NET fue migrada entonces al nuevo lenguaje.Índice [ocultar]                 1 Historia 2 Tipos de datos 3 Literales 4 Variables 5 Constantes 6 Operadores 7 Instrucciones de control 8 Métodos 9 Matrices 10 Clases y objetos 11 Cadenas de caracteres 12 Ejemplos 13 Compiladores 14 Metas del diseño del lenguaje 15 Referencias 16 Enlaces externos o o 16.2 La biblioteca de clases de la plataforma .

535 Entero corto sin signo int System. El tipo double es el más utilizado porque muchas funciones matemáticas de la biblioteca de clases de C# usan valores double.Int16 16-bit (2byte) -32.UInt16 16-bit (2byte) 0 a 65. .808 a 9.446.768 a 32.295 Entero medio sin signo long System.615 Entero largo sin signo Los tipos de coma flotante pueden representar números con componentes fraccionales.551.648 a 2.Tipo de datos de enteros Tipo Equivalente BCL Tamaño Rango Significado byte System.767 Entero corto con signo ushort System.647 Entero medio con signo uint System.223.775.483.483. La aritmética de coma flotante normal está sujeta a una variedad de errores de redondeo cuando se aplica a valores decimales.UInt64 64-bit (8byte) 0 a 18.036.147. Quizá.967.UInt32 32-bit (4byte) 0 a 4.Int64 64-bit (8byte) -9.372.SByte 8-bit (1byte) -128 a 127 Entero con signo short System.709.744.372.147.775.Int32 32-bit (4byte) -2.Byte 8-bit (1byte) 0 a 255 Entero sin signo sbyte System.223. el tipo de coma flotante más interesante de C# es decimal. Existen dos clases de tipos de coma flotante:float y double.854. El tipodecimal elimina estos errores y puede representar hasta 28 lugares decimales.073.807 Entero largo con signo ulong System.294. dirigido al uso de cálculos monetarios.036.854.

79769313486232E+308 Coma flotante largo decimal System.Decimal 128-bit (16-byte) −7. No existen conversiones automáticas de tipo entero a char.94065645841246E−324 a ±1.Char 16-bit (2-byte) '\u0000' a '\uFFFF' Carácter unicode Para los tipos de datos lógicos no existen conversiones automáticas de tipo entero a bool.401298E−45 a ±3.402823E+38 Coma flotante corto double System.Single 32-bit (4byte) ±1.Tipo de datos de coma flotante Tipo Equivalente BCL Tamaño Rango Significado float System. sino que usa un tamaño de 16 bits llamado Unicode al cual se le llama char.Boolean 8-bit (1-byte) true o false Verdadero o falso .9228162514264337593543950335 Coma flotante a monetario +7.9228162514264337593543950335 Los caracteres en C# no tienen un tamaño de 8 bits como en otros muchos lenguajes de programación. Tipo de datos de caracteres Tipo Equivalente BCL Tamaño Rango Significado char System. Tipo de datos lógicos Tipo Equivalente BCL Tamaño Rango Significado bool System.Double 64-bit (8byte) ±4.

A.f]+ entero largo 12L entero largo sin signo 654UL Coma flotante float 23.Literales[editar] En ocasiones. C#. 23.9]+ hexadecimal 0xF5. por ejemplo: 0xFF.72E3f. que equivale a 255 en decimal... Dentro de la cadena de caracteres se pueden usar secuencias de escape.. y se define anteponiendo 0x.72E3F.F. al igual que C++.72e3f double 23. 1. Enteros decimal 245. [0. a.. 1. C# tiene caracteres denominados secuencias de escape para facilitar la escritura con el teclado de símbolos que carecen de representación visual. 23.5D. Una cadena de caracteres puede iniciarse con el símbolo @ seguido por una cadena entre comillas ("). en tal caso.9.72e3F. para tal caso C# permite especificar números enteros en formato hexadecimal. 'Z'. 1. 23. define un tipo de cadena de caracteres. las secuencias de escape no tienen efecto. 1.5.72E3.95M Caracteres char 'a'.5d. 1.5f.5F. resulta más sencillo usar un sistema numérico en base 16 en lugar de 10. 0x[0. '\u0231' . y además la cadena puede ocupar dos o más líneas.72E3D decimal 9. 1.

Un identificador puede: . world". Se declaran indicando el tipo de dato que almacenará y su identificador.Cadenas String "Hello. @"C:\Windows\" Secuencias de escape Alerta (timbre) \a Retroceso \b Avance de página \f Nueva línea \n Retorno de carro \r Tabulador horizontal \t Tabulador vertical \v Nulo \0 Comilla simple \' Comilla doble \" Barra inversa \\ Variables[editar] Las variables son identificadores asociados a valores. "C:\\Windows\\".

Para asignar un valor a una variable. Declarar una variable: int miNumero. Conversiones de tipo de datos byte sbyte short ushort int uint long ulong float double decimal char bool byte E A A A A A A E E E E I sbyte E A E A E A A E E E E I . También se puede declarar y asignar un valor al mismo tiempo: int miNumero = 5. Un identificador no puede:    empezar por un número.  empezar por "_". // Asignamos el valor '5'. // Declaramos la variable. contener más de 511 caracteres. empezar por un símbolo. ni aunque sea una palabra clave. Azul Conversión explícita (E). seguido del símbolo igual (=) y el valor que queremos que almacene: miNumero = 5. contener caracteres Unicode en mayúsculas y minúsculas (sensible a mayúsculas y minúsculas). pero no la inicializamos con ningún valor. // Declaramos la variable. se indica el identificador de la misma. Leyenda Rojo Conversión incompatible (I). Verde Conversión automática o implícita (A). Las conversiones de tipo de variables en C# se representan en la siguiente tabla en donde la fila es el origen y la columna el destino. y asignamos el valor '5'.

short E E E A A A A E E E E I ushort E E E A A A A E E E E I int E E E E E A A E E E E I uint E E E E E A A E E E E I long E E E E E E E E E E E I ulong E E E E E E E E E E E I float E E E E E E E E A E I I double E E E E E E E E E E I I decimal E E E E E E E E E E I I char E E E A A A A A A A A I bool I I I I I I I I I I I I   Toda conversión implícita no ocasiona pérdida de información. La conversión explícita se realiza indicando el tipo de dato al que se quiere convertir entre paréntesis. // Conversión explícita Además de realizarse dentro de una asignación. truncamientos o redondeos. las conversiones de tipos también tienen lugar dentro de una expresión. pues en cada operación ambos operandos deben de ser del mismo tipo.   En toda conversión implícita el tipo de dato destino es mayor que el tipo de dato origen. Es posible (mas no siempre ocurre) que en una conversión explícita haya pérdida de información. Si la conversión es del tipo implícito se efectúa el siguiente algoritmo en dicho orden: . truncamientos o redondeos. // Conversión implícita long valor = (long)123. seguido del valor: long valor = 123.

los dos operandos se transforman a int. 5. Pueden ser miembros de la instancia o miembros estáticos de la clase (static). 3. Si un operando es double. readonly A diferencia de const. 4. Si un operando es ulong. Si un operando es decimal. y por tanto no se pueden cambiar. readonly double E. Constantes[editar] Las constantes son valores inmutables. E = 2. Si un operando es float. 6. Tras esto. const double PI = 3. const Cuando se declara una constante con la palabra clave const. el otro operando se transforma a long. el otro operando se transforma a ulong. el otro operando se transforma a double. también se debe asignar el valor. no requiere que se asigne el valor al mismo tiempo que se declara. y si el otro operando es de tipo sbyte. Son implícitamente estáticas (static).1415. el otro operando se transforma a uint. Si un operando es uint.* / % Lógico y a nivel de bits ^ ! ~ && || Concatenación + Incremento. Si un operando es uint. la constante queda bloqueada y no se puede cambiar. Si no es ninguno de los casos anteriores. 2. el otro operando se transforma a float.71828. Si un operando es long. Operadores[editar] Categoría Operadores Aritmético + .1. los dos se transforman a long. short o int. 8. decremento ++ -- . 7. el otro operando se transforma a decimal.

float. } else { // . } ..Desplazamiento << >> Relacional == != < > <= >= Asignación = ^= <<= >>= Acceso a miembro . Instrucciones de control[editar] if-else if (i == 2) { // . } else if (i == 3) { // . Los operadores a nivel de bits no se pueden aplicar a tipos bool... Indexación [ ] Conversión ( ) Condicional ? : Creación de objeto new Información de tipo as is sizeof typeof     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. double o decimal.. Los operadores de cortocircuito evalúan el segundo operando solo cuando es necesario..

al igual que en Java. En este ciclo se recorre la colección y la variable recibe un elemento de dicha colección en cada iteración. Métodos[editar]  Todo método debe ser parte de una clase..  La instrucción goto se sigue utilizando en C# a pesar de la polémica sobre su uso..switch switch (i) { case 1: . iguales que en C. break.. i < 10.. }  Las instrucciones if-else. } while while (i < 10) { // . } do-while do { // . do- while. básicamente.. switch. } for for (int i = 0. break.  La instrucción foreach. continue son.... . foreach foreach (char c in charList) { // . case 2: case 3: .. while.. return. } while (true).. i++) { // . break... C++ y Java. realiza un ciclo a través de los elementos de una matriz o colección. default: .. for. break. no existen métodos globales (funciones).

Ya que en C# las matrices se implementan como objetos. Un método puede devolver cualquier tipo de dato. incluyendo tipos de clase. El método Main es un método especial al cual se refiere el punto de partida del programa. pero el espacio reservado para la lista es común. . params int MaxVal(char c. la propia referencia se pasa por referencia. PassRef(ref z). } } int z = 0... ref void PassRef(ref int x) { if (x == 2) { x = 10. (Nótese que las listas y otras colecciones son variables por referencia (referencias al espacio reservado para esa lista en la pila) y que se pasa por valor al método la referencia . params int[] nums) { // .  El modificador params sirve para definir un número variable de argumentos los cuales se implementan como una matriz. out void PassOut(out int x) { x = 2. los parámetros se pasan por valor.  Cuando ref y out modifican un parámetro de referencia.  El modificador out es similar al modificador ref. } int z. 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).   C# implementa sobrecarga de métodos. PassOut(out z). Por defecto. dos o más métodos pueden tener el mismo nombre siempre y cuando se diferencien por sus parámetros.    Un método debe tener como máximo un único parámetro params y éste debe ser el último. por lo que si elimina un elemento lo hace también de la original)  El modificador ref fuerza a pasar los parámetros por referencia en vez de pasarlos por valor y obliga a inicializar la variable antes de pasar el parámetro. con la diferencia de que no se obliga a inicializar la variable antes de pasar el parámetro.

Los índices de las matrices comienzan en 0. // Llamará al primer método. 3. 3.} int a = 1. 2]. int z) { return x + y + z. int y) { return x + y. } int Suma(int x. Declarar e inicializar una matriz (el tamaño de la matriz se puede omitir): int[] intArray = new int[] {1.] intMultiArray = new int[3. 2. Acceder a un elemento: intArray[2]. // El primer parámetro es obligatorio. 4}. 6} }. int y. {5. // 3 filas y 2 columnas Declarar e inicializar una matriz multidimensional (el tamaño de la matriz se puede omitir): int[. 3). Declarar una matriz: int[] intArray = new int[5]. // Llamará al segundo método. 4. cada matriz tiene una propiedad Length que contiene el número de elementos que puede alojar o tiene alojados. 2}. -12). seguidamente se pueden poner tantos números enteros como se quiera Sobrecarga de métodos int Suma(int x. // Retornará el valor '3' Declarar una matriz multidimensional: int[. 0].] intMultiArray = new int[.. Ya que C# implementa las matrices como objetos. Main public static void Main(string[] args) { // . 5}. {3. } Suma(1.. Acceder a un elemento de una matriz multidimensional: intMultiArray[2. } Matrices[editar]    En C# las matrices se implementan como objetos. MaxVal('a'. // Retornará el valor '5' . a. 23. Suma(1. 2. 2).] { {1.

<=.  Un constructor tiene el mismo nombre que su clase y es sintácticamente similar a un método. se usa uno por defecto que consiste en asignar a todas las variables el valor 0. sino la referencia al mismo (al igual que Java). >. Todos los destructores se llamarán antes de que finalice un programa. Al comparar objetos (==. La palabra clave this es una referencia al mismo objeto en el cual se usa.  El operador de asignación no copia los valores de un objeto.  La palabra clave static hace que un miembro pertenezca a una clase en vez de pertenecer a objetos de dicha clase.Más información en: Tutorial de matrices (C#) (en inglés). -.  Cuando un objeto no es referenciado por ninguna variable.    Un constructor no devuelve ningún valor (ni siquiera void). La palabra clave base es una referencia a la clase padre del objeto en la que se usa (por defecto. Declarar una clase: class Clase { } Iniciar una clase (también llamado crear un objeto de la clase o instanciar una clase): Clase c = new Clase(). Un método static sólo debe tener acceso directamente a datos static. . el recolector de basura ejecuta el destructor de dicha clase y libera la memoria utilizada. Un constructor static se usa para inicializar atributos que se aplican a una clase en lugar de aplicarse a una instancia. Al igual que los métodos. <. *. !=.) con la palabra clave operator. Si no se específica un constructor en una clase. etc. los constructores también pueden ser sobrecargados.null o false según corresponda.     Un método static no tiene una referencia this.     El destructor de una clase no se llama cuando un objeto sale del ámbito. >=) se comprueba si hacen referencia al mismo objeto. Clases y objetos[editar]  Una variable de objeto de cierta clase no almacena los valores del objeto sino su referencia (al igual que Java).   C# permite la sobrecarga de operadores (+. Un método static puede llamar sólo a otros métodos static. Object). Se puede tener acceso a dicho miembro antes de que se cree cualquier objeto de su clase y sin referencias a un objeto.

.. // Retornará el valor '1'. } } .. } } this: class Clase { int i = 1. // Llamará al método 'Arrancar' del objeto } void Arrancar() { // .Arrancar().. Clase() { this.. } static int operator -(int x.. } Clase. int y) { // Sobrecarga el operador '+' // .i.. ya que al ser 'static'. operator: class Clase { static int operator +(int x..Constructor (como si fuera un método. precedido del símbolo '~'): class Clase { ~Clase() { // .. No hace falta crear un objeto. pertenece a la clase. } } static: class Clase { static int i = 1. int y) { // Sobrecarga el operador '-' // .. } static int operator int(byte x) { // Sobrecarga la conversión de tipo 'byte' a 'int' // . } } Destructor (como si fuera un método.. pero con el nombre de su clase): class Clase { Clase() { // ..

con el resto de los operadores relacionales. aun así. El operador == determina si dos referencias hacen referencia al mismo objeto. ya que ambas cadenas contienen "texto" Concatenar cadenas: string texto = "Cadena de" + " caracteres". solo se pueden copiar total o parcialmente.String de la plataforma . Sin embargo. si no se pusiera. se puede obtener un carácter arbitrario de una cadena por medio de su índice (mas no modificarlo). // Equivalente al anterior Longitud de una cadena: string texto = "Cadena de caracteres".   Se pueden concatenar (unir) dos cadenas mediante el operador +.String("Cadena de caracteres"). int i = texto. Realmente la palabra clave string es un alias de la clase System.Comparación de objetos: class Clase { } Clase c1 = new Clase(). // Retornará 'true'. string texto = new System.Length. ya que son dos objetos distintos Cadenas de caracteres[editar]   El tipo de dato para las cadenas de caracteres es string. bool b = c1 == c2. como < y >=. sí se comparan las referencias. Clase c2 = new Clase(). Declarar una cadena de caracteres (como si fuera una variable de un tipo de dato como int o double): string texto = "Cadena de caracteres". una vez creadas no se pueden modificar. pero al usar dicho operador con dos variables tipostring se prueba la igualdad del contenido de las cadenas y no su referencia. // Nótese el espacio antes de "caracteres". aparecería junto: "decaracteres" . // Retornará 'false'. Las cadenas se pueden usar en las instrucciones switch.   Las cadenas son inmutables. // Retornará '20' Comparar dos cadenas: bool b = "texto" == "texto".NET.  En C# las cadenas son objetos y no una matriz de caracteres.

// Retornará '10' int j = texto. string texto2 = "xyz".LastIndexOf("def"). string texto = "abcdefabcdef". // Retornará '9'.String. string texto = "Cadena de caracteres".CompareTo("abc"). string texto1 = "abc".ToUpper(). // Retornará '0' int IndexOf(string str): devuelve el índice de la primera coincidencia de la subcadena especificada en str. mayor que cero si la cadena que llama es mayor que str.Copy(texto1).ToLower(). // Retornará '4' int j = texto. seguido de 'e' y 'f' int LastIndexOf(string str): devuelve el índice de la última coincidencia de la subcadena especificada en str. string texto2 = System. o -1 en caso de error. // Retornará "caracter" Más información en: String (Clase) (System) (en inglés). y una instancia de la misma.LastIndexOf("e"). int i = texto. seguido de 'e' y 'f' string ToLower: devuelve una copia de la cadena en minúsculas. // Retornará "abc" string ToUpper: devuelve una copia de la cadena en mayúsculas. string texto = texto. string texto = "abc". o -1 en caso de error. string texto = texto. // Retornará '3'. . string texto = "abc". // Retornará "ABC" string Substring: devuelve una subcadena. int i = texto. que es donde se encuentra el último carácter 'd'.String.IndexOf("def"). como: static string Copy(string str): devuelve una copia de str. int i = texto. string.La clase System.Substring(10. string texto = "ABC". // 'texto2' ahora contiene "abc" int CompareTo(string str): devuelve menor que cero si la cadena que llama es menor que str.IndexOf("e"). string texto = texto. 8). que es donde se encuentra el carácter 'd'. indicando la posición de inicio y la longitud que se desea. string texto = "abcdefabcdef". y cero si las cadenas son iguales. poseen algunos métodos para trabajar con cadenas.

int y = 20.numPuertas. // Imprimirá en pantalla: "El resultado es: 30" } } Uso de clases.WriteLine("El resultado es: " + (x + y)).NumPuertas = numPuertas. public class Coche { private int numPuertas. } set { this. public class Ejemplo { public static void Main(string[] args) { int x = 10. propiedades y sobrecarga: using System. } } Suma y concatenación: using System. para poder trabajar con dicho valor. } } public Coche(int numPuertas) { this. // 'value' es una variable que se asigna automáticamente al asignar un valor a la propiedad. } // Sobrecarga: si se instancia la clase sin indicar ningún parámetro. public class Ejemplo { public static void Main(string[] args) { Console. se inicializa 'numPuertas' con el valor '2' public Coche() : this(2) { } } .numPuertas = value. Console. métodos.WriteLine("Hola mundo"). public int NumPuertas { get { return this.Ejemplos[editar] Ejemplo básico "Hola mundo": using System.

0 (SDK) incluye un compilador de C#.WriteLine("El número de puertas es: " + coche. con una interfaz muy similar a Microsoft Visual Studio. Metas del diseño del lenguaje[editar] El estándar ECMA-334 lista las siguientes metas en el diseño para C#:   Lenguaje de programación orientado a objetos simple.  Capacidad para desarrollar componentes de software que se puedan usar en ambientes distribuidos. IDE libre para C# bajo licencia GNU LGPL. de Borland Software Corporation. IDE por excelencia de este lenguaje. Fácil migración del programador al nuevo lenguaje. Como parte de esta implementación se incluye un compilador de C#.   Portabilidad del código fuente. // Se usa el segundo constructor coche. y recolección de basura automática. Referencias . pero no un IDE. especialmente para programadores familiarizados con C.NET. DotGNU Portable.   Delphi 2006. revisión de límites de vectores.public class Ejemplo { public static void Main(string[] args) { Coche coche = new Coche(). detección de intentos de usar variables no inicializadas. Microsoft Visual Studio.  Mono. } } Compiladores[editar] En la actualidad existen los siguientes compiladores para el lenguaje C#:    Microsoft . C++ y Java. de la Free Software Foundation.NET Framework 2. Console. Adecuación para escribir aplicaciones de cualquier tamaño: desde las más grandes y sofisticadas como sistemas operativos hasta las más pequeñas funciones.NumPuertas = 4.  Aplicaciones económicas en cuanto a memoria y procesado. es una implementación con licencia GNU GPL de todo el entorno . moderno y de propósito general.NumPuertas).   Soporte para internacionalización.NET desarrollado por Novell. SharpDevelop. Inclusión de principios de ingeniería de software tales como revisión estricta de los tipos de datos.

14 -4 3 Como sucede con todos los tipos de clase. Console. double dub = -3.Valorar este tema Una clase estática es básicamente igual que una clase no estática.clases estáticas y sus miembros (Guía de programación de C#) Visual Studio 2010 Otras versiones personas que lo han encontrado útil: 1 de 2 . En otras palabras. que sus campos se han inicializado y que se ha llamado a su constructor estático antes de que se haga referencia a la clase por primera vez en el programa. no puede utilizar la palabra clave new para crear una variable del tipo clase. Una clase estática se puede utilizar como un contenedor adecuado para los conjuntos de métodos que solo funcionan en parámetros de entrada y no tienen que obtener ni establecer campos internos de instancia.NET Framework. si cuenta con una clase estática que se denomina UtilityClasse incluye un método público denominado MethodA.WriteLine(Math. Sin embargo. Por ejemplo. la clase estática System. Solo se llama una vez a un constructor estático y una clase estática permanece en memoria durante el período de duración del dominio de aplicación donde reside el programa. la llamada al método se realiza tal como se muestra en el ejemplo siguiente: C# UtilityClass.WriteLine(Math.Abs(dub)). Console. El programa no puede especificar exactamente cuándo se carga la clase. . pero existe una diferencia: no se pueden crear instancias de una clase estática. Es decir. en la biblioteca de clases .Abs(dub))).Math contiene varios métodos que realizan operaciones matemáticas.Round(Math. Dado que no hay ninguna variable de instancia. sin ningún requisito para almacenar o recuperar datos únicos de una instancia determinada de la clase Math. los miembros de la clase se aplican especificando el nombre de la clase y del método. se garantiza que se ha cargado. Common Language Runtime (CLR) de . como se muestra en el ejemplo siguiente.14.WriteLine(Math. Console. // // // // Output: 3. Por ejemplo.NET Framework carga la información de tipo de una clase estática cuando se carga el programa que hace referencia a la clase. el acceso a los miembros de una clase estática se realiza mediante el propio nombre de clase.MethodA().Floor(dub)).

double fahrenheit = (celsius * 9 / 5) + 32. Ejemplo Este es un ejemplo de clase estática que contiene dos métodos que convierten la temperatura de grados Celsius a Fahrenheit y viceversa: C# public static class TemperatureConverter { public static double CelsiusToFahrenheit(string temperatureCelsius) { // Convert argument to double for calculations. } public static double FahrenheitToCelsius(string temperatureFahrenheit) { // Convert argument to double for calculations. // Convert Fahrenheit to Celsius. La ventaja de utilizar una clase estática es que el compilador puede comprobar que no se agregue accidentalmente ningún miembro de instancia. básicamente igual que crear una clase que solo contiene miembros estáticos y un constructor privado. excepto Object. return fahrenheit. sin embargo. vea Constructores estáticos (Guía de programación de C#).Parse(temperatureFahrenheit). Las clases estáticas no pueden contener un constructor de instancia. double celsius = (fahrenheit . no pueden heredarse. El compilador garantizará que no se puedan crear instancias de esta clase. por consiguiente.Parse(temperatureCelsius).Nota Para crear una clase no estática que permita crear solo una instancia de sí misma. vea Implementing Singleton in C#. Las clases no estáticas también deben definir un constructor estático si contienen miembros estáticos que requieren una inicialización no trivial.  No puede contener constructores de instancia.  No se pueden crear instancias de ella. pueden contener un constructor estático. double celsius = Double.32) * 5 / 9. Para obtener más información. Crear una clase estática es. // Convert Celsius to Fahrenheit. En la siguiente lista se proporcionan las características principales de una clase estática:  Solo contiene miembros estáticos.  Es de tipo sealed. Un constructor privado evita que se creen instancias de la clase. por consiguiente. Las clases estáticas son de tipo sealed y. double fahrenheit = Double. . No pueden heredar de cualquier clase.

"). C). break. C = 0. break. :2 Please enter the Fahrenheit temperature: 20 Temperature in Celsius: -6. break."). From Fahrenheit to Celsius. Console.ReadKey().WriteLine("Press any key to exit.CelsiusToFahrenheit(Console. } } /* Example Output: Please select the convertor direction 1. F).ReadLine()).return celsius. From Celsius to Fahrenheit. 2. From Celsius to Fahrenheit. } // Keep the console window open in debug mode. } } class TestTemperatureConverter { static void Main() { Console.Write(":"). Console. F = TemperatureConverter.Write("Please enter the Fahrenheit temperature: "). switch (selection) { case "1": Console. C = TemperatureConverter. case "2": Console.WriteLine("Please select the convertor direction"). Console.Write("Please enter the Celsius temperature: "). Console.WriteLine("Temperature in Fahrenheit: {0:F2}"."). default: Console. Console.ReadLine()). Console. string selection = Console.WriteLine("Temperature in Celsius: {0:F2}".WriteLine("2.WriteLine("1. double F. From Fahrenheit to Celsius.FahrenheitToCelsius(Console.67 Press any key to exit.").ReadLine(). */ .WriteLine("Please select a convertor. Console.

Los miembros estáticos de la clase se declaran mediante la incorporación de la palabra clave static antes del tipo de valor devuelto del miembro. Dos usos comunes de los campos estáticos son mantener un recuento del número de objetos de los que se han creado instancias y almacenar un valor que se debe compartir entre todas las instancias. Solo existe una copia de un miembro estático. porque pertenecen a la clase y no a una instancia de la clase. Para tener acceso a un miembro . se puede tener acceso a los campos de constante mediante la misma notación ClassName. El nombre de clase. propiedades o eventos estáticos. El miembro estático es invocable en una clase incluso si no se ha creado ninguna instancia de la clase. Por tanto. y no el nombre de instancia. campos. Los métodos y propiedades estáticos no pueden tener acceso a los campos y eventos no estáticos de su tipo contenedor y no pueden tener acceso a una variable de instancia de ningún objeto a menos que se pase explícitamente en un parámetro de método. Los métodos estáticos se pueden sobrecargar pero no invalidar. independientemente del número de instancias que se creen de la clase. // Other non-static fields and properties. } } public static void Drive() { } public static event EventType RunOutOfGas. public static int SizeOfGasTank { get { return 15. Aunque un campo no se puede declarar como static const. Pertenece al tipo. No se requiere ninguna instancia de objeto. Es más habitual declarar una clase no estática con algunos miembros estáticos que declarar toda una clase como estática.Miembros estáticos Una clase no estática puede contener métodos.. } Los miembros estáticos se inicializan antes de obtener acceso al miembro estático por primera vez y antes de llamar al constructor estático. no a las instancias del tipo. es el que tiene acceso al miembro estático..MemberName que se utiliza para los campos estáticos. un campo const es esencialmente estático en su comportamiento. C# no admite las variables local estáticas (variables que se declaran en el ámbito del método). tal como se muestra en el ejemplo siguiente: C# public class Automobile { public static int NumberOfWheels = 4. si éste existe.

estático de la clase. que también comprueba las referencias de objeto nulas. tal como se muestra en el siguiente ejemplo: C# Automobile.NumberOfWheels. proporcione un constructor estático que los inicialice cuando se cargue la clase. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#. utilice el nombre de la clase en lugar de un nombre de variable para especificar la ubicación del miembro. Sin embargo. Especificación del lenguaje C# Para obtener más información. Una llamada a un método estático genera una instrucción de llamada en el lenguaje intermedio de Microsoft (MSIL). mientras que una llamada a un método de instancia genera una instrucción callvirt. int i = Automobile. vea la Especificación del lenguaje C#.Drive(). Si la clase contiene campos estáticos. Vea también Referencia static (Referencia de C#) Clases (Guía de programación de C#) class (Referencia de C#) Constructores estáticos (Guía de programación de C#) Constructores de instancias (Guía de programación de C#) Conceptos Guía de programación de C# Diseño de clases estáticas . la mayoría de las veces la diferencia de rendimiento entre ambas no es significativa.

Elimine “no reproducible” con IntelliTrace La novedosa característica IntelliTrace hace que el argumento “no reproducible” sea cosa del pasado. Los evaluadores pueden archivar errores enriquecidos y modificables con información del sistema e . desde el diseño hasta la implementación. Tanto si crea soluciones nuevas como si quiere mejorar las aplicaciones ya existentes. Visual Studio 2010 Ultimate le permite hacer realidad su idea gracias a que admite un número cada vez mayor de plataformas y tecnologías (incluidos los sistemas informáticos en cloud y en paralelo).46 GB | Medicina Incl. | 2010 DESCRIPCIÓN Microsoft Visual Studio 2010 Ultimate es el exhaustivo paquete de herramientas de administración del ciclo de vida de las aplicaciones para equipos. Con este paquete puede garantizar la calidad de los resultados.Microsoft Visual Studio 2010 Ultimate Español Posteado En: Software por jimmy_criptoy DATOS TÉCNICOS Microsoft Visual Studio 2010 Ultimate Español Spanish | ISO | 2.

así como herramientas de pruebas y depuración integradas que le ayudarán a crear siempre un código de gran calidad. administre la capacidad del proyecto con datos históricos y documentos de planificación basados en Microsoft Excel. y aceptar el ciclo mediante la captura de todo el contexto de la prueba. Sea proactivo acerca de la administración ágil de un proyecto Visual Studio 2010 Ultimate está optimizado para el proceso de desarrollo iterativo actual con características que ayudan a mantener la productividad y a reaccionar frente a posibles riesgos antes de que se produzcan. incluso. automatizar la navegación de pruebas manuales y acelerar la solución. de principio a fin. Los diagramas de capas ayudan a que los esfuerzos de desarrollo sigan su curso para que la aplicación se adapte a su idea original. Además. Las herramientas de ALM integradas en Visual Studio 2010 Ultimate contribuyen a que las organizaciones colaboren y se comuniquen de forma efectiva en todos los niveles. CARACTERÍSTICAS DE VISUAL STUDIO 2010 ULTIMATE Microsoft Visual Studio 2010 Ultimate incluye potentes herramientas que simplifican todo el proceso de desarrollo de aplicaciones. . analizar en profundidad áreas específicas para conocerlas mejor. proporciona una herramienta única para capturar y actualizar requisitos de pruebas. Puede supervisar el estado del proyecto mediante informes que se generan automáticamente. Administración del ciclo de vida de las aplicaciones (ALM) La creación de aplicaciones de éxito requiere un proceso de ejecución uniforme que beneficie a todos los componentes del equipo. Esto proporciona a los desarrolladores todo lo que necesitan para garantizar que pueda reproducirse cualquier error. Los equipos pueden observar una mayor productividad y ahorro de costes al utilizar características de colaboración avanzadas. los desarrolladores pueden reproducir el error informado en el estado en el que se encontró. Adopte pruebas manuales Visual Studio Test Professional 2010. De ese modo. una instantánea del entorno.incluir. incluso. Se pueden producir modelos detallados de cómo está construida exactamente una aplicación e. Conozca la arquitectura existente El Explorador de arquitectura ayuda a conocer y liberar el valor de los activos de código existentes y sus interdependencias. parte de Visual Studio 2010 Ultimate. Garantice el cumplimiento de la arquitectura Use el nuevo diagrama de capas para definir y comunicar la arquitectura de la aplicación lógica y validar artefactos de código con respecto a la arquitectura necesaria.

Test Professional. Entorno de desarrollo integrado Visual Studio 2010 Ultimate le permite ponerse al mando. así como de pruebas manuales. pruebas de carga. que automatizan la realización de pruebas de la interfaz de usuario en aplicaciones basadas en web y en Windows®. cobertura de código y otras características completas que no se encuentran en otras ediciones de Visual Studio. Depuración y diagnóstico Visual Studio 2010 Ultimate presenta IntelliTrace. Visual Studio 2010 Ultimate admite los cinco diagramas de UML más comunes que conviven junto con su código. de modo que pueda organizar y administrar su trabajo como quiera. por ejemplo. Otras características incluyen análisis de código estático. Visual Studio 2010 Ultimate es consciente de ello y proporciona potentes herramientas de implementación y administración de cambios que garantizan que la base de datos y la aplicación estén siempre sincronizadas. entre las que se . Los diagramas por capas ayudan a garantizar el cumplimiento de la arquitectura y permiten validar artefactos de código con respecto al diagrama. Aprovéchese de las características personalizables como. pruebas de rendimiento de web. Visual Studio 2010 Ultimate le permite hacer realidad su idea en una gran variedad de plataformas.y a que se hagan una idea precisa del estado real del proyecto. una valiosa característica de depuración que hace que el argumento “no reproducible” sea cosa del pasado. Compatibilidad con la plataforma de desarrollo Tanto si crea soluciones nuevas como si quiere mejorar las aplicaciones ya existentes. También puede dar rienda suelta a su creatividad utilizando los diseñadores visuales para mejorar las últimas plataformas. Aprovéchese de las pruebas de IU codificadas. Desarrollo de bases de datos El desarrollo de bases de datos requiere el mismo cuidado y atención que el desarrollo de aplicaciones. lo que garantiza que se ofrezcan soluciones de gran calidad al tiempo que se reducen los costos. Arquitectura y modelado El Explorador de arquitectura de Visual Studio 2010 Ultimate ayuda a entender los activos de código existentes y otras interdependencias. Los evaluadores pueden archivar errores enriquecidos y modificables para que los desarrolladores puedan reproducir siempre el error del que se informe en el estado en el que se encontró. Herramientas de prueba Visual Studio 2010 Ultimate incorpora todas nuestras herramientas avanzadas de pruebas para ayudarle a garantizar la calidad del código en todo momento. Además. incluido Windows 7. métricas de código y creación de perfiles. compatibilidad con varios monitores.

(Lab Management estará disponible como candidato a la versión comercial como RTM y se distribuirá posteriormente. Además de todas las características incluidas en Visual Studio 2010 Professional con MSDN y Visual Studio 2010 Premium con MSDN. Web. Ultimate con MSDN incluye más horas de uso de Azure. y proporciona rastreabilidad completa y la posibilidad de comprobar en tiempo real el estado de los proyectos (para todos los miembros del equipo) con potentes herramientas de elaboración de informes y paneles. Team Foundation Server Team Foundation Server (TFS) es la plataforma de colaboración sobre la que se asienta la solución de administración de ciclo de vida de aplicaciones de Microsoft. Cloud. la configuración y el desmontaje de entornos virtuales y entornos de puntos de comprobación. Lab Management Visual Studio 2010 Ultimate ofrece un conjunto completo de características de laboratorio de pruebas. excepto Starter Edition Windows 7 (x86 y x64) Windows Server 2003 (x86 y x64) con Service Pack 2 Windows Server 2003 R2 (x86 y x64) Windows Server 2008 (x86 y x64) con Service Pack 2 Windows Server 2008 R2 (x64) Arquitecturas compatibles:   32 bits (x86) 64 bits (x64) . todo en un único entorno de desarrollo integrado. acceso no Visual Studio a Team Foundation Server a través de Teamprise y software de administración de pruebas y laboratorio.incluyen Windows.) Suscripción a MSDN Visual Studio 2010 Ultimate con MSDN es la oferta más completa para los desarrolladores. REQUISITOS DEL SISTEMA Requisitos de software Visual Studio 2010 puede instalarse en los sistemas operativos siguientes:        Windows XP (x86) con Service Pack 3 – todas las ediciones. excepto Starter Edition Windows Vista (x86 y x64) con Service Pack 1 – todas las ediciones. Windows Server. entre otras. Office y SharePoint. incluido el aprovisionamiento de entornos a partir de plantillas. TFS automatiza y simplifica el proceso de entrega de software.

6 GHz 1024 MB de RAM Espacio disponible en disco duro de 3 GB Unidad de disco duro de 5.400 RPM Tarjeta de vídeo compatible con DirectX 9 con una resolución de 1280 x 1024 o superior Unidad de DVD-ROM CAPTURA .Requisitos de hardware       Equipo con un procesador de al menos 1.

.

Studio.ENLACES PRIVADOS Visual.SPANiSH INICIA SESIÓN Y COMENTA PARA VER LOS ENLACES.Ultimate. ENLACES PÚBLICOS . REGISTRATE Y COMENTA PARA VER LOS ENLACES.2010.

Visual.Studio.SPANiSH X7 | Freakshare | DepositFiles | UploadBox | FileFactory | Hotfile | NetLoad FileServe | SharingMatrix | Uploaded Descarga Directa: Descargar Contraseña/Password: www.org .intercambiosvirtuales.Ultimate.2010.

com/es-es/download/details.http://www.microsoft.aspx?id=12187 .