Está en la página 1de 63

1

Primeros pasos
C # se pronuncia como "Do sostenido". Se trata de un nuevo lenguaje de programacin que permite a los programadores en la construccin rpida de soluciones para la plataforma Microsoft. NET. Hoy en da, uno no puede, simplemente no puede, darse el lujo de ignorar C #. En nuestra opinin, consider que promete mucho y vamos a hacer todo lo posible, a travs de este libro, para ayudarle a desarrollar todo su potencial. No se preocupe, no vamos a ensear a usted ms que otro lenguaje de programacin. Es nuestra intencin de ayudar a aplicar en C # en situaciones prcticas, para aplicar en la prctica sus conocimientos recin adquiridos en la red. Con esta breve introduccin, vamos a emprender un camino que te llevar a nuevas aventuras en el mundo de Internet. En este captulo, vamos a empezar con C # mediante la introduccin de algunos programas muy simples. Para recordar, incluso un viaje de mil millas comienza con un solo paso. Suponemos que usted no tiene conocimientos previos de cualquier lenguaje de programacin. Pero antes de que nos atrapado en el fascinante mundo de C #, vamos a hacer un directorio donde vamos a guardar todo nuestro trabajo. Para ello, haga clic en Inicio, Programas, y luego ir a Accesorios y seleccione Smbolo del sistema (Windows 2000) o el smbolo del sistema MS-DOS como se llama en Windows 98. Una vez en el smbolo del sistema crea un directorio llamado csharp (md csharp) y cambie a ese directorio (cd csharp). Ahora escriba el comando "editar a.cs ', que se abrir el editor de MS-DOS - sencillo editor de todo el mundo.
C: \ CSharp> edicin a.cs

S, lo comprendo muy bien cmo debe ser el anhelo de escribir su primer programa en C # y hacerlo funcionar. Pero antes de hacer eso, hay ciertas complejidades que usted debe entender. Lo que se refiere a a.cs se llama el nombre de archivo o programa. Aqu hemos llamado a nuestro archivo o programa a.cs. Por qu a.cs? Bueno, antes de que empezramos a escribir este libro, hemos consultado a un astrlogo de renombre que predijo que si el nombre de nuestro primer archivo a.cs continuacin, una gran suerte que se duchaba con nosotros. Como no quera pelearse con las estrellas, hemos llamado a nuestro archivo a.cs.Sin embargo, usted es libre de seguir adelante y llame a su archivo el nombre que desee. Pero entonces lo hace bajo su propio riesgo! Recuerde que hombre prevenido vale por dos! Bromas aparte, 'cs' es la extensin utilizada para los archivos de C #. Dicen que de todas las cosas que llevas, tu expresin es la ms importante. A pesar de esto, uno se ve ms pulcro en un traje en vez de una camisa y pantalones inspidas. Del mismo modo, aunque no es obligatorio proporcionar la extensin "CS", puede hacer que un nombre de archivo parece ms impresionante, dndole una extensin. Para reiterar, que podra haber dado la extensin de decir 'ws' demasiado, no importa. Sin embargo, distrado como somos, es ms prudente para dar extensiones adecuadas, mientras que nombrar los archivos.

Como primer paso, vamos a entender la estructura bsica de un programa en C #.


a.cs clase de zzz { }

Aqu empezamos con la clase de palabras zzz seguido de llaves de apertura y cierre. Una clase no es ms que una coleccin --- una coleccin de todo lo que contiene el lenguaje de programacin. Es como un paquete o un contenedor, que puede contener cualquier cosa. Por lo tanto todo lo que en un programa de C # debe estar encerrado dentro de una clase. Hemos llamado a nuestra clase zzz, una vez ms se podra haber llamado cualquier otra cosa, pero si usted prefiere seguir nuestra convencin de nomenclatura (por razones bien amplificados por encima!), Lo que sea zzz. Ahora viene la parte que usted ha estado esperando con impaciencia! Con el fin de ejecutar el programa, vaya al men Archivo y haga clic en Salir. Usted recibir un cuadro de dilogo que le preguntar si desea guardar el archivo o no, decir que s. Ahora que hemos escrito y guardado nuestro archivo tenemos que ejecutarlo. El compilador crea cdigo ejecutable. El comando usado para llamar al compilador de C # csc es seguido por el nombre del programa. Desde nuestro nombre del programa es a.cs, el comando csc a.cs llamar al compilador. Un compilador es un programa que comprende el lenguaje de programacin C #. As, la clase de palabra es parte integrante del lenguaje C #.Microsoft permite descargar libremente el compilador de C # desde su sitio web:. Http://msdn.microsoft.com/library/default.asp Seleccione NET Framework SDK en Desarrollo... Elija la opcin de descarga para descargar el SDK, que es alrededor de 127 MB. Instale el producto en su causa de la mquina si no, ninguno de los siguientes programas va a funcionar. Adems, Internet Explorer 5.5 y Microsoft Data Access Components (2,7) debe estar instalado antes de instalar el SDK Una vez hecho esto, escriba el comando de la siguiente manera:
C: \ CSharp> csc a.cs

Ver la siguiente salida en la pantalla en la ventana de DOS.


Microsoft (R) Visual C # Compiler versin 7.00.9254 [CLR versin v1.0.2914] Copyright (C) Microsoft Corp 2000-2001. Todos los derechos reservados. error CS5001: Programa "a.exe" no tiene un punto de entrada definido

Al igual que la emocin estaba empezando a crecer, nuestro programa regresa con un mensaje de error. No te preocupes, el fracaso ocasional es el precio de la mejora. El mensaje de error comienza con un nmero de error CS5001 seguido de un mensaje crptico, que no entendemos. Somos conscientes del hecho de que todo tiene un principio y un fin. Del mismo modo, un programa en C # tambin tiene un comienzo y un final. Ah! Ahora te das cuenta de por qu se produjo el error. Nos olvidamos de decirle a C #, donde para comenzar a ejecutar el programa de. Este punto de partida tambin se conoce como un punto de entrada.

Puede especificar el punto de entrada mediante la adicin de void main () para su programa, tal como lo hemos hecho a continuacin.
a.cs clase de zzz { static void Main () { } }

Compilar el cdigo anterior de dar la orden como csc a.cs. Voila! Ahora no hay errores. El compilador ahora generar un archivo exe llamado a.exe. Dar el comando dir en el smbolo del sistema demostrar la misma. En la observacin aguda te dars cuenta de que entre los 2 archivos de la lista, hay un archivo con el nombre de a.exe. Simplemente escriba 'a' en el smbolo del sistema, el programa se ejecutar ahora!
C: \ CSharp> a

El programa se ejecutar, pero no muestra la produccin en nuestra pantalla. Pero, al menos tenemos ningn error. Las palabras, esttica y sin valor, se explicar a usted un poco ms tarde, en la perspectiva correcta. Por lo tanto si haba sentido el comienzo de un dolor de cabeza enorme, usted puede respirar ms fcil! Todo seguido por '(' y ')' entre parntesis se llama una funcin. As, es obvio que principal no es sino una funcin. Aqu estamos creando una funcin llamada main. Es seguido por el '{' y '}' llaves. Tenga en cuenta que la letra M en el principal es el capital. As C # requiere una funcin llamada principal, que es la primera funcin que ser ejecutado. De lo contrario, resultar en un error. Ergo, cada vez que vea una palabra que comienza con un proceso abierto '(' y cerrar parntesis ')', C # y la mayora de los otros lenguajes de programacin llaman una funcin. El {significa el comienzo de una funcin y el} significa el final de la funcin.Los chicos que disearon el idioma decidi utilizar llaves {} en lugar de inicio y fin. Cuando le dices a la gente que est aprendiendo un lenguaje de programacin, en realidad est aprendiendo a usar llaves {} para especificar el comienzo y el final de una funcin. Estas normas tienen que ser recordado de memoria. No tienes eleccin. Ahora estamos listos para aadir algo de cdigo en nuestro programa. Para ello, agregue la lnea de WriteLine ("Infierno"), tal como lo han hecho a continuacin.
a.cs clase de zzz { static void Main () { WriteLine ("Infierno") } }

Uy! El astrlogo le haba prometido una lluvia de suerte! Incluso una llovizna parece estar muy lejos! La ejecucin de los resultados de los programas anteriores en el siguiente error:

Error del compilador a.cs (5,18): error CS1002:; espera

El mensaje de error comienza con el nombre del archivo, a.cs seguido por parntesis que contienen el nmero de lnea y el nmero de columna, donde se produjo el error. El compilador nos informa de que ha encontrado un error en la lnea nmero 5 y nmero de la columna 18 y se espera una;. Como dice el clich, cuando las cosas se ponen duras, los duros se ponen en marcha. As que no debemos perder el nimo hasta el momento, vamos a entender por qu se produjo este error. Mira WriteLine dentro de los corchetes, no le suena? No es una funcin WriteLine tambin? Pero aqu no tenemos las llaves que le siguen. Esto es porque aqu no estamos creando una funcin como la que hemos creado principal. Entonces, qu es lo que estamos haciendo? Estamos llamando a una funcin llamada WriteLine, que ya se ha creado. El error dice "," espera. A pesar de que es obvio para nosotros que la declaracin ha terminado, por desgracia para ti y para m, C # no es tan inteligente. Se requiere un punto y coma para decir alto y claro que la declaracin ha terminado. Simplemente presionando la tecla enter no es suficiente. Aunque no as para otros lenguajes de programacin, en C # es obligatorio el uso de un punto y coma. Ay! Cada lenguaje de programacin tiene sus propias reglas! En esta coyuntura, una pregunta inteligente sera - Pero por qu punto y coma? Por qu no todas las marcas puntuacion otro? No sabemos a ciencia cierta, pero tal vez los desarrolladores de C # se le pedir que seleccione un carcter que indican el final de un comunicado. Las especies que no son comprometedoras que somos, que no pudieron llegar a un consenso. Resultado? Receta de la abuela de la mina eene meene mo! Cuando se detuvieron, su dedo apuntaba hacia el punto y coma, por lo tanto, se seleccion la misma. As, las reglas son reglas, tan absurdo como pueda parecer, que deben ser seguidas. Aadir el punto y coma y ejecutar el programa. Tambin idiomas como el ABAP / 4 de SAP termina las lneas con un punto (punto). Por lo tanto esperamos que para entender la programacin en Ingls. Cada lengua espera un final de terminacin de la declaracin / comando. Cada lengua espera un smbolo para indicar cuando el usuario ha terminado de decir algo. En C # es una;, otros idiomas tienen sus propios smbolos. Recuerde que la declaracin o la funcin WriteLine que estaba escrito en la lnea nmero 5 por lo tanto, el error reportado la lnea nmero 5.
a.cs clase de zzz { static void Main () { WriteLine ("Infierno"); } } Error del compilador a.cs (5,1): error CS0103: 'WriteLine' El nombre no existe en la clase o el espacio de nombres 'zzz'

Otro error! Estamos extremadamente decepcionados, simplemente no parecen nuestros das. Sin embargo, creemos firmemente que usted puede estar decepcionado si no, pero son, sin duda

condenada al fracaso si no lo intentas. Y no queremos estar condenado verdad? As que vamos a mantener nuestra barbilla para arriba y seguir adelante. Pero usted sabe lo que es ms irritante molestia? Por qu todos los mensajes de error tan difcil de entender? Bueno, con la experiencia que hemos adquirido en los ltimos aos hemos aprendido que si los mensajes de error se podra entender entonces no tendran en el primer lugar! En cualquier caso, para ser realmente sincero, el error se produjo porque tir una mala pasada en ti! Estamos llamando a una funcin WriteLine pero en realidad no existe tal funcin. El nombre exacto de la funcin no es WriteLine pero System.Console.WriteLine. Microsoft es conocido por grandes nombres de fantasa y aqu es un ejemplo ms. En cualquier caso, vamos a ejecutar el programa.
a.cs clase de zzz { static void Main () { System.Console.WriteLine ("Infierno"); } } Salida Infierno

Por ltimo, no hay errores! Seguramente usted se siente bendecido! Se muestra "Infierno" de la palabra, y sospechamos que es exactamente lo que est pasando ahora mismo. Pero si usted sigue nuestro paso a paso los programas que te aseguro que el cielo no est demasiado lejos. Ahora eliminar todos los espacios adicionales y "entra" de su programa, tal como lo han hecho a continuacin y compilar el programa de nuevo.
a.cs clase zzz {static void Main () {Console.WriteLine ("El infierno");}} Salida Infierno

Usted se dar cuenta que al hacerlo no da ningn error. Al igual que el programa anterior, se muestra "Infierno". El compilador de C # no se ve afectada por ella. Pero el uso de espacios y "entra definitivamente hacer su programa ms ordenado y por lo tanto ms fcil de leer. El efecto se aprecia especialmente en programas de gran envergadura y ms an cuando otra persona tiene que pasar por ellos. Habiendo dicho eso, de todos modos, lo primero que compilador de C # que hace es elimina todos los espacios y entra en el cdigo del programa que usted ha escrito. En el prximo programa, que hemos denominado la funcin WriteLine dos veces.
a.cs clase de zzz { static void Main () {

System.Console.WriteLine ("Infierno"); System.Console.WriteLine ("Adis"); } } Salida Infierno Bye

Al ejecutar este programa, 'El infierno' y 'Adis' se muestran en dos lneas separadas. En este caso, no estamos obligados a dar todo lo que tiene el 'enter' efecto, WriteLine imprime automticamente en una nueva lnea cada vez. Esto simplemente significa que usted puede llamar a una funcin tantas veces como quieras. En la ilustracin siguiente, vamos a entender cmo se llama a funciones y creado. Aqu estamos llamando a una funcin abc ().
a.cs clase de zzz { static void Main () { ABC (); } } Error del compilador a.cs (5,1): error CS0103: 'abc' El nombre no existe en la clase o el espacio de nombres 'zzz'

Al ejecutar este programa vas a conseguir, qu otra cosa, pero un error. Peter Drucker, el gur de la gestin de el famoso dijo una vez que el mejor es un hombre, ms errores que harn que, por las cosas ms nuevas que se tratan. As que ah lo tienes - la prxima vez que usted encuentra un error, simplemente se diga que usted acaba de ser mejores en lo que ests haciendo. En cualquier caso, el error dice que ABC no existe. Aqu estamos llamando a una funcin llamada ABC (), pero en el que se abc () definido o creado? No es una funcin que ha sido proporcionada por C # para nosotros de forma gratuita. Es nuestra funcin propia de cosecha propia que nos est llamando. La leccin aqu es que no podemos llamar a una funcin sin antes crear. Por lo tanto, para rectificar este error lo primero que va a crear una funcin de abc. El siguiente ejemplo lo demuestra.
a.cs clase de zzz { static void Main () { ABC (); } void abc () { System.Console.WriteLine ("Infierno"); } }

Salida Infierno

En funcin de la ABC, se ha incluido slo una instruccin WriteLine-dentro de las llaves. El '{' y '}' tirantes indicar el comienzo y el final de esta funcin. Por otra parte, una funcin puede contener millones de lneas de cdigo que se ejecutar cuando la funcin se llama. Ya que todo est contenido en una clase, nuestra funcin abc, tambin se crea dentro de la clase, pero zzz principal en el exterior. Sin embargo, la funcin se llama desde Main. Al ejecutar el programa, "Infierno" en la pantalla. Esto se debe a que hemos incluido el cdigo de 'infierno' que se mostrar en el rea abc funcin. As, cuando el control llega a la lnea ABC (), sino que busca que la funcin y ejecuta el cdigo dentro de esa funcin. Vamos a explicar esttica y anular la tarde como se haba prometido. Usted puede llamar a tantas funciones como quieras desde tu programa. Pero usted debe recordar para separar cada uno con un punto y coma. El siguiente programa ilustra esto.
a.cs clase de zzz { static void Main () { ABC (); PQR (); ABC (); } void abc () { System.Console.WriteLine ("Yo soy ABC"); } void pqr () { System.Console.WriteLine ("Yo soy PQR"); } } Salida Yo soy ABC Estoy PQR Yo soy ABC

Al principio, la funcin se llama ABC, a continuacin, PQR y de nuevo hacemos un llamado ABC. Al ejecutar este programa "Yo soy ABC ',' Yo soy PQR" y "Yo soy ABC 'en la pantalla. Esto se debe a que hemos incluido el cdigo de estas lneas que se muestran en las respectivas funciones. En el siguiente programa que estamos llamando a la funcin de abc pqr y no del principal.
a.cs clase de zzz { static void Main () { ABC (); }

void abc () { PQR (); System.Console.WriteLine ("Yo soy ABC"); } void pqr () { System.Console.WriteLine ("Yo soy PQR"); } } Salida Estoy PQR Yo soy ABC

En funcin de la ABC, estamos llamando primero a PQR y luego mostrar 'Yo soy la ABC mediante la funcin WriteLine. Por lo tanto, en primer lugar 'Yo soy PQR' se muestra a continuacin, "Yo soy ABC. Por lo tanto, este programa muestra cmo las funciones se pueden llamar desde otras funciones. Ahora que hemos creado nuestro propio abc funciones y pqr, tenemos una comprensin intuitiva de la forma en C # creado el System.Console.WriteLine funcin. El siguiente programa utiliza las capacidades de impresin o el formato de la funcin WriteLine.
a.cs clase de zzz { static void Main () { System.Console.WriteLine ("100 {0}", 100); } } Salida 100 100

El cero en las llaves significa que despus de la primera coma no es un valor y que debe mostrar este valor. No se puede diferenciar entre los dos 100. El {0} se sustituye con 100, el nmero, que sigue a la primera coma. Si no te gusta el nmero 100, utilice el nmero 420 en su lugar. No importa - por lo menos es algo que algunos de ustedes pueden identificar fcilmente con el! El programa siguiente es simplemente una extensin de los anteriores.
a.cs clase de zzz { static void Main () { System.Console.WriteLine ("100 {0}, {1}", 100,200); } } Salida

100 100 200

Aqu, el {0} se sustituye por 100 y {1} se sustituye por 200. La coma (,) separa los dos nmeros. Por lo tanto {0} significa que el primer nmero y {1} significa que el segundo. C # le gusta a contar desde cero y no uno.
a.cs clase de zzz { static void Main () { ii; II = 20; System.Console.WriteLine ("{0}", ii); } } Error del compilador a.cs (5,1): error CS0201: Asignacin Slo, llamada, incremento, decremento, y nuevas expresiones se pueden utilizar como una declaracin a.cs (5,1): error CS0103: 'ii' El nombre no existe en la clase o el espacio de nombres 'zzz' a.cs (6,1): error CS0103: 'ii' El nombre no existe en la clase o el espacio de nombres 'zzz' a.cs (7,33): error CS0103: 'ii' El nombre no existe en la clase o el espacio de nombres 'zzz'

La experiencia es el conocimiento de una mayor cantidad de cosas que no debera. Pero ahora que han decidido embarcarse en este libro, vamos a ver lo que usted debe saber! Ejecutando esto da como resultado del programa en un gran nmero de errores, como se muestra arriba. Vamos a entender la lgica detrs de l. Aqu hemos incluido una palabra extraa --- ii. Este ii palabra se le asigna un valor de 20 como ii = 20.Sin embargo, C # es un programa tmido. No hablar con extraos! Aqu ii no es ms que un extrao para C #. C # no sabemos quin o qu es ii. No se puede escribir las palabras que se sienten bien. Por lo tanto, con el fin de corregir este error debemos decir que C # es ii. Nuestro prximo programa ser demostrar cmo se puede hacer esto.
a.cs clase de zzz { static void Main () { int II; II = 20; System.Console.WriteLine ("{0}", ii); } } Salida 20

Tenga en cuenta que en este programa hemos aadido la palabra int antes del Mundial. La palabra int indica que II es un nmero entero o un nmero. Cada vez que nosotros creamos nuestra propia palabra, como II, C # quiere saber lo que vamos a almacenar en esta palabra. Vamos a entender esto mejor, y en su totalidad en tan slo un poco de tiempo. Aqu estamos inicializando II a 20 o dndole

un valor de 20, escribiendo II = 20. Por qu 20? Tal vez porque nos sentimos muy joven hoy! Despus de esto tenemos la funcin WriteLine. Ahora bien, es un hecho conocido que jaggery es un buen sustituto de azcar. Del mismo modo, en C # se puede sustituir un nmero con una palabra. As pues, en WriteLine hemos utilizado la palabra II en lugar de un nmero. El II palabra se sustituye por el valor 20. As, en la ejecucin del programa, el nmero 20 se muestra. Usted se estar preguntando por qu si alguna vez uso una palabra cuando se puede usar un nmero directamente. Nuestro prximo programa le ilumine en este sentido.
a.cs clase de zzz { static void Main () { int II; II = 20; System.Console.WriteLine II = 30; System.Console.WriteLine ii = ii 10; System.Console.WriteLine ii = ii 1; System.Console.WriteLine ii + +; System.Console.WriteLine } } Salida 20 30 40 41 42

("{0}", ii); ("{0}", ii); ("{0}", ii); ("{0}", ii); ("{0}", ii);

Las tres primeras lneas de este programa son idnticos a los de nuestra anterior. As, en el primero, la funcin WriteLine mostrar el nmero 20. A partir de entonces, diciendo: II = 30 estamos inicializando la palabra II a un valor de 30. En efecto, estamos cambiando el valor de II a partir de 20 a 30. Por lo tanto, ahora se mostrar WriteLine 30. Para la comprensin conceptual, que present a principios de II como una palabra. Sin embargo, en el mundo del software, que tiene otro nombre, sino que se llama en realidad una variable. Por lo tanto, una variable es una palabra cuyo valor vara o cambios. ii inicialmente tena un valor de 20 que cambi a 30. Volviendo a lo que la palabra significa-int cuando dices entero int, int o el nmero de medios. Cuando decimos int II, significa que la variable II almacenar un nmero. ii tambin podra ser utilizado para almacenar las letras del alfabeto como los nombres de las personas. Tambin podra almacenar una fecha. Pero aqu hemos querido ii para almacenar un nmero. Por lo tanto, tenemos que decirle a C # en el avance en cuanto a lo que la variable se va a almacenar. Por eso decimos int ii. C # entiende la palabra int int es una parte del lenguaje de programacin C #.

La variable II comenz con el valor 20 y ahora se mantiene un valor de 30. En la siguiente lnea que tenemos ii = ii 10. El 'igual a' signo hace que esta declaracin parecer complicado. Para evitar confusiones, siempre empezar por mirar a la derecha de la "igual a" firmar. A la derecha del signo igual tenemos ii 10. Desde II sostiene el valor 30, II 10 se lee como 30 +10, que evala a 40. Por lo tanto ii = ii 10 ahora se lee como ii = 40. Este valor 40 se da a la variable del lado izquierdo. Ahora que II tiene un valor 40, WriteLine mostrar 40. Del mismo modo, decimos ii = ii +1. Aqu, el valor de II se incrementa en uno. Y el nuevo valor de II, que es de 41 aos se muestra WriteLine. En la siguiente lnea que tenemos ii + +. Tenga en cuenta que ii = ii +1 y ii + + hacer lo mismo. Ambos incrementar el valor de II por 1. Por lo tanto WriteLine se imprimir el nmero 42. Este es un gran problema con los lenguajes de programacin. Como hay muchas maneras de pelar un gato, tambin hay muchas maneras de aumentar el valor de una variable. As ii = ii + 1 y II + + hacer lo mismo. Un programador por lo tanto tiene la opcin de utilizar cualquiera de las dos maneras de hacer la misma cosa. Hay que ir --- como se puede ver, los programadores tienen por primera vez por desgracia, mucho que aprender. En la vida diaria, un centenar de personas diferentes pueden hacer la tarea misma de mil maneras diferentes. De manera similar, en la programacin hay ms de una forma de hacer una cosa en particular.Programacin se convierte en un problema debido a la redundancia. Puesto que hay dos maneras de hacer lo mismo, se tiene que aprender tanto y que puede ser muy confuso. Por supuesto, es a su criterio para elegir el mtodo que se sienta cmodo. A partir de entonces, a pesar de que puede haber muchas otras maneras de hacer una cosa en particular, vamos a ensearle un solo mtodo que se considere oportuno. Una variable es una palabra que almacena un valor. Este valor se puede cambiar a voluntad por el programador. Dondequiera que se puede utilizar un nmero, tambin puede utilizar una variable. El siguiente programa puede parecer ajeno a ti. Esto es porque dice la verdad. Si encuentra que una condicin es verdadera, devuelve true y si encuentra que la condicin sea falsa, falsa salida. Muy a diferencia de algunos de ustedes, que hara todo lo contrario!
a.cs clase de zzz { static void Main () { System.Console.WriteLine System.Console.WriteLine System.Console.WriteLine System.Console.WriteLine System.Console.WriteLine System.Console.WriteLine } } Salida Verdadero Falso Falso Verdadero

("{0}", ("{0}", ("{0}", ("{0}", ("{0}", ("{0}",

5> 2); 5 <2); 2 <2); 2 <= 2); 2 = 2!); 2 = 3!);

Falso Verdadero

Vamos a entender esta lnea por lnea del programa como de costumbre. Aqu la primera lnea dice WriteLine ("{0}", 5> 2), es 5> 2? S. As que la condicin 5> 2 se evala como verdadera. De ah la {0} en WriteLine se sustituye por cierto y la funcin WriteLine muestra True. 5> 2 se llama una condicin. Una condicin es semejante a una pregunta que tiene que dar lugar a un s o un no o un verdadero o falso. En este caso el nmero 5 es mayor que el nmero 2 y por lo tanto, la funcin se evala como verdadero. C # entiende las palabras verdadero y lo falso. En el segundo WriteLine tenemos la condicin 5 <2. Es de 5 <2? No. Entonces, la condicin 5 <2 se evala como falsa y por lo tanto WriteLine muestra Falso. Del mismo modo, la siguiente condicin 2 <2 no es cierto y por lo tanto falso se muestra. En el prximo estado de cuenta que tenemos 2 <= 2. Aqu la primera seal de que se '<' primero se comprueba si 2 <2? No, 2 no es menor que 2. Entonces '=' la segunda seal se comprueba es decir, si 2 = 2? S.Por lo tanto la condicin 2 <= 2 se evala a las pantallas de los verdaderos y WriteLine Verdadero. <= Es, pues, dos condiciones en una. En el WriteLine al lado tenemos la condicin 2! = 2. ! = 'Significa' no es igual a ". Pero dos es igual a 2, por lo tanto, la condicin se evala a falso y lo falso se muestra. La comparacin es falsa, por lo tanto, la condicin es falsa. En el ltimo estado de cuenta que tenemos la condicin 2 ! = 3. Es de 2! = 3? Si 2 no es igual a 3, por lo que la condicin se evala como verdadero y real en la pantalla. Este verdadero y lo falso es un tipo especial de datos en C #. Se llama 'bool' o boolean deriva de lgebra de Boole.
a.cs clase de zzz { static void Main () { bool II; ii = true; System.Console.WriteLine ("{0}", ii); ii = false; System.Console.WriteLine ("{0}", ii); } } Salida Verdadero Falso

En nuestros programas anteriores se utiliz el tipo de datos int para la variable II. Esto significaba que II puede almacenar nmeros enteros o nmeros. Del mismo modo, es posible inicializar II ya sea verdadera o falsa. Esto es posible utilizando el tipo de datos BOOL para ii. Un tipo de datos: el tipo de datos de una variable puede contener. Por lo tanto, aqu estamos diciendo bool ii. En el primer caso, estamos inicializando ii en true. As que en WriteLine, {0} se sustituye por cierto. En el segundo caso ii se inicializa en falso y {0} se reemplaza con datos falsos.

En lo esencial, ahora sabemos que las variables pueden ser bool o lgica o pueden contener las palabras Verdadero o Falso. Adems, las variables tambin pueden contener nmeros. Vamos a ver cmo C # distingue entre tipos de datos.
a.cs clase de zzz { static void Main () { bool II; jj int; II = 10; jj = false; } }

La ejecucin del programa anterior da los siguientes errores:


Error del compilador a.cs (6,4): error CS0031: valor de la constante '10 'no se puede convertir en un "bool" a.cs (7,4): error CS0029: No se puede convertir implcitamente el tipo 'int' a 'int'

Si desea que el arco iris, tienes que poner para arriba con algo de lluvia. As que vamos a entender la razn detrs de los errores. Aqu C # est internamente diciendo que lo distingue entre tipos de datos. En este sentido, C # es muy pequea sobre los valores que le dan a las variables. Bool no se pueden mezclar con int y viceversa. Desde ii es un bool no se puede inicializar a 10, que es un nmero. C # es muy estricto acerca de esto. Y debido a que JJ es un entero que no puede inicializar en false. As que hay que ser muy cuidadoso acerca de cmo inicializar las variables. Despus de todo, no tiene sentido preguntar a alguien que es bueno en la conduccin de ensear a los ordenadores, y viceversa. Todo el mundo tiene su lugar en la vida. Del mismo modo, las variables tambin tienen su lugar. Por lo tanto una variable declarada como int slo puede tener los valores true o false. Del mismo modo, int puede tener slo nmeros o nmeros enteros, no puede tomar valores true o false. Nuestro prximo programa es similar a uno de los programas anteriores.
a.cs clase de zzz { static void Main () { bool II; ii = 6 <7; System.Console.WriteLine ("{0}", ii); } } Salida Verdadero

Aqu II es una variable de tipo bool. En la siguiente instruccin que tenemos ii = 6 <7. Como usted ya sabe, en tal caso usted debe comenzar por mirar a la derecha de la "igual a firmar". Debido a

que 6 es menor que 7, la condicin se evala como verdadera y II se iniciar en true. Por lo tanto {0} se reemplaza por el valor de la II, lo cual es cierto y verdadero en la pantalla. C # se llama un lenguaje fuertemente tipado porque no se puede inicializar una variable de tipo int a una variable de tipo bool. La razn C # es muy estricto en cuanto a esto es porque el sistema elimina un gran nmero de errores de programacin descuidada. Algunos lenguajes como C en la que C # se basa en no importa qu valores de inicializar sus variables. C # es ms estricto que incluso Java. En cierto modo, es como su madre cuando se trata de decirle lo que usted est haciendo mal en la vida. Por lo tanto, es extremadamente difcil hacer errores tontos en C #. Recuerde que cuando usted est escribiendo cdigo en C #, el compilador siempre est mirando hacia abajo de su hombro asegurndose de que no salga con algn error.

Si Declaracin
Hasta ahora, el cdigo que hemos escrito es ms bien intil. Esto es debido a que siempre es ejecutado. La vida es divertida slo porque es impredecible. No sabemos lo que el maana va a traer. La variedad es la sal de la vida! Del mismo modo, nos gustara escribir programas de ordenador, que le dan gusto a la programacin. Queremos escribir los programas que se comportan de manera diferente dependiendo de diferentes situaciones o circunstancias. Y esto se puede conseguir con la ayuda de la instruccin si. As que abrchense los cinturones de seguridad y preprate para viajar! Los programas prximos a demostrar la utilidad y la aplicacin de la sentencia if.
a.cs clase de zzz { static void Main () { if (false) System.Console.WriteLine ("Hola"); } } Advertencia del compilador a.cs (6,1): warning CS0162: Cdigo inalcanzable detectado

En este programa hemos incluido la palabra 'si' seguido por falsa entre parntesis. Esta es la sentencia if y su sintaxis. La sintaxis es la gramtica en la escritura. Por lo tanto no tenemos ms remedio que acatar las normas. Se le llama una declaracin porque cualquier cosa que C # reconoce que se llama un comunicado. Cuando se ejecuta este programa, te das cuenta de que no hay salida. As que este programa slo se mostrar nada. Ahora sabes por qu tenemos la advertencia anterior, como nuestro cdigo nunca se ejecutan. Vamos a entender la lgica detrs de l. La declaracin, si le permite incluir la toma de decisiones en su programa. Se decide si se debe ejecutar la siguiente lnea o no. Cuando la declaracin, si se evala como falsa entonces la siguiente lnea se ignora.La declaracin, si trae consigo el poder de decidir si cierto tipo de cdigo debe ser ejecutado o no.

El siguiente programa se hacen de este concepto ms claro.


a.cs clase de zzz { static void Main () { if (false) System.Console.WriteLine ("Hola"); System.Console.WriteLine ("Adis"); } } Salida Bye

La sentencia if se ve en la siguiente lnea inmediato, no se ve en la lnea despus de eso. Desde la declaracin, si influye en una sola lnea, usted ver Bye slo se muestra y Hi no. Advertencia en la misma otra vez. Pero si quieres tanto a los estados que sern afectados por el si luego encerrarlos entre llaves. Esto se ilustra a continuacin.
a.cs clase de zzz { static void Main () { if (false) { System.Console.WriteLine ("Hola"); System.Console.WriteLine ("Adis"); } } }

Aqu hemos incluido tanto las lneas de cdigo dentro de las llaves. Ahora, si la declaracin afecta tanto las lneas de cdigo. La condicin de ser falso, no se muestra nada. Por lo tanto, la declaracin, si nos da la opcin de ejecutar o no ejecutar a una determinada pieza de cdigo. Si utilizamos siempre falso, entonces el cdigo no ser llamado. Pero, qu te contamos acerca de las condiciones? Vuelven ya sea verdadera o falsa. Por lo tanto, en el prximo programa tenemos 3> 8 como la condicin. Desde el 3 no es mayor que 8, la condicin se evala como false. Puesto que no hay llaves, slo la siguiente lnea se ve afectada por la sentencia if. Por lo tanto Bye slo se muestra.
a.cs clase de zzz { static void Main () { si (3> 8)

System.Console.WriteLine ("Hola"); System.Console.WriteLine ("Adis"); } } Salida Bye

Veamos otra variante de este programa. Ahora, la parte interesante es que dondequiera que usted puede utilizar una condicin tambin puede utilizar una variable que es de tipo bool, que sabemos que se evala como verdadera o falsa.
a.cs clase de zzz { static void Main () { bool II; ii = true; si (ii) { System.Console.WriteLine ("Hola"); System.Console.WriteLine ("Adis"); } } } Salida Hola Bye

Aqu la variable II se declara como un bool y luego inicializa en true. En la siguiente lnea que tenemos, si (ii). La variable de II tiene el valor real y por lo tanto la condicin if se evala como verdadera. La condicin de ser cierto tanto para Hi y Bye se muestran. Tenga en cuenta que aqu, tanto las declaraciones se incluyen en las llaves resultantes tanto en los estados se vean afectados por la sentencia if. Por lo tanto si la declaracin est afectando a un bloque de instrucciones. Declaracin es otra manera de decir que estamos creando una variable. En el siguiente programa que tenemos un caso con la otra persona. Si la condicin, si se evala como verdadera, entonces la instruccin que sigue se llama, pero si se evala como false entonces el otro se llama.
a.cs clase de zzz { static void Main () { if (false) System.Console.WriteLine ("Hola"); ms System.Console.WriteLine ("Adis"); } }

Salida Bye

En este caso, ya que la condicin se evala como falsa la otra se llama Adis y por lo tanto se muestra. As, la sentencia else adicional especifica una instruccin que se ejecuta cuando la condicin es falsa. Esta construccin, que abarca todas las posibilidades, como una condicin puede ser verdadera o falsa. En un "if-else 'la construccin de uno de ellos tiene que ser ejecutado. Los programas de ordenador se dice que se hizo inteligente, debido a la sentencia if. Cuanto ms el uso de la declaracin, si, cuanto ms inteligente se convierte en su programa. La declaracin, si es uno de los pilares principales de cualquier lenguaje de programacin. As, todos los lenguajes de programacin tiene que tener una sentencia if.

Loops
La declaracin, si es la piedra angular de la programacin porque le da la inteligencia y un poder de decisin a la lengua. El segundo componente importante de cualquier lenguaje de programacin es una construccin de bucle. En un par de veces muchos programas que tendra que repetir las instrucciones. En C #, la sentencia es una forma de un bucle que permite repetir las declaraciones. Sin embargo, como ya sabemos, una declaracin puede ser tambin un bloque de instrucciones, por lo que tambin permite la repeticin de varias instrucciones. Nuestro prximo programa explica el bucle for.
a.cs clase de zzz { static void Main () { int II; para (ii = 1; ii <= 5; ii + +) System.Console.WriteLine ("Hola {0} ", ii); } } Salida Hola 1 Hola 2 Hola 3 Hola 4 Hi 5

El tiene 2 puntos y comas para como parte de su sintaxis o reglas. La instruccin hasta el primer punto y coma se ejecuta slo una vez. Por primera vez y slo la primera vez II se inicializa a 1. Recuerde que hasta el primer punto y coma es el estado ejecuta una sola vez. La declaracin encerrado dentro de la coma primero y segundo es una condicin. La condicin comprueba si ii <= 5 se evala como verdadera. Dado que esta condicin se evala como verdadera, la instruccin en el abierto y las llaves cercanas se ejecuta. Si la condicin se evala como falsa, la declaracin se pasa por alto y el ciclo termina. La variable II tiene un valor 1 que es menor que 5, por lo que se llamar System.Console.WriteLine que muestra "Hola 1 'como el valor de ii es 1. Despus de la instruccin es ejecutado, la ltima parte de la por es decir, desde el punto y coma segundos para el soporte de cierre es ejecutado. ii + + aumentar el valor de II por 1, por lo que es 2. La condicin se comprueba

una vez ms, es de 2 <= 5. La respuesta aqu es cierto, por lo que 'Hola 2' se muestra. Y esta montaa rusa contina hasta que la condicin es falsa. Cuando II tiene el valor 6, revisar la afeccin es decir, es de 6 <= 5. La respuesta es falsa, la de termina. Esta es la forma en la instruccin para permite la repeticin de cdigo. El siguiente ejemplo ayudar an ms para ilustrar esto.
a.cs clase de zzz { static void Main () { int II; para (ii = 1; ii <= 5; ii + +) System.Console.WriteLine ("Hola {0} ", ii); System.Console.WriteLine ("Hola {0} .. ", ii); } } Salida Hola 1 Hola 2 Hola 3 Hola 4 Hi 5 Hola 6 ..

En este programa tenemos dos declaraciones WriteLine. El bucle sigue las mismas reglas que la sentencia if. As, en ausencia de las llaves del bucle for slo afectar a la prxima declaracin inmediata. Por lo tanto, el bucle para imprimir nmeros del 1 al 5 junto con hi. En el momento en el bucle se termina, II con los puntos se imprimir Hola 6 ... Esto viene a demostrar que cuando ii tiene un valor de seis aos, el bucle terminar. El siguiente programa muestra cmo el lazo para permite la repeticin de varias instrucciones.
a.cs clase de zzz { static void Main () { int II; para (ii = 1; ii <= 5; ii + +) { System.Console.WriteLine ("Hola {0} ", ii); System.Console.WriteLine ("Hola {0} .. ", ii); }}} Salida Hola 1 Hola 1 .. Hola 2 Hola 2 .. Hola 3 Hola 3 ..

Hola 4 Hola 4 .. Hi 5 Hi 5 ..

En este caso, ambas declaraciones WriteLine estn encerrados dentro de las llaves. Por lo tanto, tanto los estados se ven afectados por el bucle. Por lo tanto, en este caso, cada nmero se muestra dos veces junto con Hi, una vez sin el punto y una vez con los dos puntos. Al igual que en el bucle es el bucle while.
a.cs clase de zzz { static void Main () { int II; ii = 1; mientras que (ii <= 5) { System.Console.WriteLine ("Hola {0} ", ii); } } }

El bucle mientras toma una condicin, por lo tanto, la variable II se inicializa a 1 antes de entrar en el bucle. La condicin comprueba si ii <= 5 se evala como verdadera. Actualmente, el valor de ii es 1. La condicin se evala como verdadera, y la declaracin dentro de las llaves se ejecuta. System.Console.WriteLine se llama Hi y el valor de ii. Tenga en cuenta que aqu no estamos cambiando el valor de la II dentro del bucle. Dado que el valor de la II sigue siendo una condicin siempre se evala como verdadero y el bucle se continuar para siempre, por tiempo indefinido. No podemos tener nada para siempre, verdad? Tiene que haber un fin a esto en alguna parte! Nuestro prximo programa va a resolver este problema.
a.cs clase de zzz { static void Main () { int II; ii = 1; mientras que (ii <= 5) { System.Console.WriteLine ("Hola {0} ", ii); ii + +; } } } Salida Hola 1 Hola 2

Hola 3 Hola 4 Hi 5

Este programa es similar a la anterior. El nico cambio que hemos hecho es que hemos aadido la lnea II + +, por lo que por primera vez Hola 1 se muestra. Entonces el momento ii + + se encuentra el valor de II se incrementa en 1, por lo que es 2. A continuacin, la condicin, 2 <= 5, se comprueba. La condicin de ser cierto, una vez ms entramos en el bucle y Hi-2 se muestra. Esto continuar hasta que se convierte en II 6. Una vez que II es de 6 de la condicin se evala como falsa y el bucle termine. Su mente puede reflexionar sobre la pregunta: "Debo usar un favor o mientras que un? El bucle es similar al bucle while. Para responder a su pregunta de la manera ms sencilla "Los lunes, mircoles, viernes y utilizar para los martes, jueves, sbados, mientras que utiliza. Domingos, suponemos que nadie escribe cdigo ". Alternativa" Lanzar una moneda al aire, los jefes de utilizar mientras que, las colas no las use para ";-) En otras palabras, es a su discrecin para utilizar el que usted se sienta cmodo. Una vez ms, C # le ofrece mltiples maneras de hacer la misma cosa.

La instruccin Return
Vamos a entender la instruccin de retorno con el ejemplo siguiente.
a.cs clase de zzz { static void Main () { int II; ii = ABC (); System.Console.WriteLine ("Hola {0}", ii); } ABC esttica int () { System.Console.WriteLine ("abc"); devolver el 100; } } Salida abc HI 100

En este programa, en un principio, ii se declara como una variable de tipo int. Entonces comenzamos a la ejecucin de la lnea II = abc (), Acaso el lado derecho del anillo de la declaracin de una campana? No estamos llamando a la funcin abc ()? De ah que en este punto, el control pasa a la funcin de abc (). En la funcin que tiene la declaracin de WriteLine, que imprime 'abc'. A partir de entonces, tenemos una instruccin de retorno. Se dice que devolver el 100. En efecto, el abc function ()

devuelve un valor de 100.As, el Estado II = abc (), ahora se puede leer como ii = 100. Ahora que II tiene un valor de 100, {0} en WriteLine se sustituye por 100 y 100, a su vez se muestra.
a.cs clase de zzz { static void Main () { int II; ii = ABC (); System.Console.WriteLine ("Hola {0}", ii); } void abc () { System.Console.WriteLine ("abc"); devolver el 100; } } Error del compilador a.cs (6,6): error CS0029: No se puede convertir implcitamente el 'vaco' tipo a 'int' a.cs (12,1): error CS0127: Desde 'zzz.abc ()' devuelve void, una palabra clave de retorno no debe ser seguido por una expresin de objeto

La ejecucin de los resultados de los programas anteriores en los errores. Aqu tenemos void abc (). Qu medios estticos, vamos a explicar un poco ms tarde. Es con la intencin de permitirle a aprender mejor, as que por favor tengan paciencia con nosotros. El vaco palabra no significa nada. As diciendo vaco abc () estamos diciendo que la funcin de abc () no devuelve ningn valor. Las funciones pueden / maynot valores de retorno. A principios de ABC volvi un int. Cuando una funcin devuelve void, como en este caso, estamos diciendo que la ABC no puede devolver un valor. Pero en el cdigo de la funcin que hemos escrito de retorno de 100. Por lo tanto, a causa de esta contradiccin nos sale el error. Tenga en cuenta que en el programa anterior no tuvimos un error. Esto se debi a que haba dicho esttica abc int (). Aqu int significa el tipo de retorno de la funcin. Dado que la funcin devuelve un nmero que usamos int. En nuestro siguiente ejemplo, hemos hecho una sola, es decir adems hemos aadido System.Console.WriteLine ("Finalizar"), despus de la instruccin de retorno.
a.cs clase de zzz { static void Main () { int II; ii = ABC (); System.Console.WriteLine ("Hola {0}", ii); } ABC esttica int () { System.Console.WriteLine ("abc"); devolver el 100; System.Console.WriteLine ("Finalizar");

} } Advertencia del compilador a.cs (13,1): warning CS0162: Cdigo inalcanzable detectado Salida abc HI 100

Al ejecutar este programa, usted encontrar que el resultado es el mismo que el programa anterior. Para su asombro que no se ve en "Finalizar" la palabra que aparece. No, no se debe a que C # no te gusta. La razn es que cualquier cosa despus de la instruccin de retorno se ignora. Por lo tanto, es posible que un centenar de declaraciones WriteLine despus de la instruccin de retorno, pero todos ellos sern ignorados. En pocas palabras, no hay lneas despus de la instruccin de retorno ser llamado. Por eso, el compilador de C #, corts como es, le da una advertencia y no un error.

Ms informacin sobre los tipos de datos .......


Usted ya ha aprendido acerca de dos tipos de datos, int y bool. Nuestro prximo programa presenta 'cadena' un nuevo tipo de datos.
a.cs clase de zzz { static void Main () { String s; s = "infierno"; System.Console.WriteLine (s); } } Salida infierno

En este programa, la variable s se declara como una cadena. Esto implica que s almacenar principalmente letras del alfabeto. A continuacin, se inicializa s al infierno, que no es sino una coleccin de las letras del alfabeto. Tenga en cuenta que todas las cadenas tienen que ser encerrada en dobles comillas. System.Console.WriteLine muestra el valor de la variable s, que es el 'infierno'. Anteriormente escribi una cadena entre comillas directamente. Sin embargo, esta vez estamos usando un nombre de variable en su lugar. Ahora sabemos que el primer parmetro a la funcin WriteLine es una cadena. Hemos nombrado a principios de nuestra variable II y ahora lo hemos llamado s. En realidad, llamamos a nuestras variables, dependiendo del tiempo que escribimos nuestros programas. Usted decide sus propias reglas para asignar nombres a las variables. Todo lo que entre comillas dobles se llama una cadena.System.Console.WriteLine es lo suficientemente inteligente como para mostrar cadenas, Bools y int.

Veamos otra variante del programa anterior.


a.cs clase de zzz { static void Main () { String s; s = "infierno"; System.Console.WriteLine ("{0}", s); } } Salida infierno

Este programa es exactamente igual que el anterior, la nica diferencia es que hemos utilizado {0} s en lugar de escribir solamente. Aqu, el {0} se reemplaza por el valor de s, que es el 'infierno'. Por lo tanto, utilizando el {0} es preferible, ya que comprende un gran nmero de tipos de datos y la forma de mostrar sus valores. La consolidacin, nuestro siguiente ejemplo incorpora todos los tipos de datos que hemos aprendido hasta ahora.
a.cs clase de zzz { static void Main () { String s; int II; jj bool; II = 10; jj = false; s = "infierno"; System.Console.WriteLine ("{0} {1} {2}", ii, jj, s); } } Salida 10 Falso el infierno

Aqu la variable s se declara como una cadena. A continuacin, ii se declara como int y JJ se declara como int. En los prximos tres declaraciones que se inicializa cada una de las variables. ii se inicializa a 10, JJ se inicializa en falso y se inicializa s al infierno. Ahora, con la ayuda de una instruccin WriteLine solo estamos mostrando los valores de todas las variables. {0} se reemplaza con 10, {1} se sustituye por falsa y {2} se sustituye por el infierno. Esto viene a demostrar que todos los tipos de datos se pueden visualizar en conjunto, en un comunicado WriteLine sola. Por lo tanto, C # permite a todos los tipos de datos para coexistir en armona. Ahora, slo si la gente de nuestro pas podra hacer lo mismo!

Paso de parmetros a las funciones

A estas alturas ya estn familiarizados con las funciones y cmo se llama a funciones. El siguiente programa muestra cmo se pasan los parmetros a las funciones.
a.cs la clase {zzz static void Main () { abc (10, false, "el infierno"); } void abc (int i, int j, la cadena s) { System.Console.WriteLine ("{0} {1} {2}", i, j, s); } } Salida 10 Falso el infierno

Hemos vuelto a utilizar la funcin System.Console.WriteLine para mostrar los valores de las variables o simplemente mostrar texto en la pantalla. Para hacer que imprima algo en la pantalla, que tenamos que dar a las cosas que queramos imprimir. Estas cosas no son ms que parmetros. No pasan las cosas a las funciones; que pasar parmetros a las funciones. Hasta ahora no hemos creado nuestras propias funciones con parmetros. En este programa, estamos llamando a la funcin ABC con tres cosas, con tres parmetros. El primero es un nmero, el segundo es un valor lgico y el tercero es una cadena. Por lo tanto, estamos pasando los valores de 10, falsas y el infierno a la ABC function (); Estos valores deben ser almacenados en algn lugar, pero dnde? Cuando creamos la funcin abc tenemos que indicar los nombres de las tres variables, junto con sus respectivos tipos de datos. Esto es porque los valores que pasan se almacena en estas variables. Por lo tanto tenemos las variables i, j y s. Estos se muestran utilizando WriteLine. Por lo tanto, es la salida 10, Falso y el infierno. As es como se pasan los parmetros a las funciones en C #. Recuerde que usted decidir qu nombres para dar a las variables. Los parmetros pasados a las funciones tambin son variables.
a.cs zzz clase { static void Main () { abc (10, false); } void abc (int i, int j, la cadena s) { System.Console.WriteLine ("{0} {1} {2}", i, j, s); } } Error del compilador a.cs (4,1): error CS1501: No hay sobrecarga para el mtodo de 'abc' se '2 'argumentos

En la elaboracin de este programa se encontrar con el error anterior. Aqu hacemos un llamado ABC, con slo dos parmetros, 10 y falsa. Considerando que la funcin abc realmente se crea con

tres parmetros. Estamos pasando un nmero errneo de parmetros, por lo tanto el error. Leccin? Hay que pasar el mismo nmero de parmetros que la funcin ha sido creada para aceptar. La falta de concordancia entre el nmero de parmetros que se pasan y los que aceptan ser sin duda le aseguro un error. As como antes, C # un gran nmero de comprobaciones de errores en el cdigo. Porque, si se permite la llamada a la funcin de arriba para ir por delante, cul sera el valor del tercer parmetro s ser? Ahora cambia el orden de los valores que se estn pasando. La funcin de ABC debera tener este aspecto abc-("el infierno", 10, false);
a.cs clase de zzz { static void Main () { abc ("infierno", 10, false); } void abc (int i, int j, la cadena s) { System.Console.WriteLine ("{0} {1} {2}", i, j, s); } } Error del compilador a.cs (5,1): cs1502 de error: El mejor partido mtodo sobrecargado para 'zzz.abc (int, bool, string)' tiene algunos argumentos no vlidos a.cs (5,5): error cs1503: El argumento '1 ': no se puede convertir de' cadena 'a' int ' a.cs (5,12): error cs1503: El argumento '2 ': no se puede convertir de' int 'a' bool ' a.cs (5,15): error cs1503: Argumento '3 ': no se puede convertir de' bool 'a la' cadena '

Al ejecutar este programa se le enfrenta con los errores anteriores. Estos errores se han producido debido a una diferencia en el tipo de datos. Es un poco como poner un palo redondo en una clavija cuadrada!Cmo se va a encajar? Si bien llamando a la funcin abc () el primer parmetro que estamos pasando es la palabra "infierno". Pero la funcin de abc () ha sido creado para aceptar el primer parmetro como un int. Recuerda que te dije que no, hace mucho tiempo, que C # distingue entre tipos de datos. Por lo tanto no se puede almacenar una cadena en una variable de tipo int. De manera similar, el valor 10 no puede ser almacenado como un bool y falso no puede ser almacenado como una cadena. Por lo tanto, no slo debe el nmero de parmetros que se pasa y aceptado ser el mismo, sino tambin sus tipos de datos deben coincidir. Como el aceite y el agua no se mezclan, de la misma manera no se puede dar C # un entero cuando se quiere una cadena. Como se dijo anteriormente, algunas lenguas son ms tolerantes a continuacin, C #, debido a que el programador comete ms errores en ellos.
a.cs clase de zzz { static void Main () { ABC (); }

} clase yyy { void abc () { System.Console.WriteLine ("abc"); } } Error de compilacin a.cs (5,1): error CS0103: 'abc' El nombre no existe en la clase o el espacio de nombres 'zzz'

Parece que estamos enganchados a los errores! En este programa hemos creado otra clase llamada yyy. Podemos tener tantas clases en uno. Cs como nos gusta. Este programa cuenta con dos clases, y yyy zzz. La zzz clase tiene una funcin llamada main.Principal indica el punto de partida de nuestro cdigo y, como tal, es la primera funcin que se llama. El yyy clase contiene una funcin llamada ABC. Aqu estamos llamando a la funcin abc diciendo abc (), en zzz clase. Pero la clase zzz no tiene ninguna funcin con el nombre de ABC. Se limita a dar ABC (); anima a C # para suponer que la ABC () existe dentro de la clase zzz. Pero nuestra funcin ABC se encuentra en yyy. Por lo tanto se obtiene un error como que estamos tratando de llamar a una funcin que existe en otra clase. Pero estamos firmes! Queremos utilizar la funcin de la ABC que tiene yyy. Es la tendencia humana a desear cosas que otros tienen! Por lo tanto, en el prximo programa que estamos llamando a la funcin abc en la clase de yyy por escrito yyy.abc ();
a.cs clase de zzz { static void Main () { yyy.abc (); } } clase yyy { void abc () { System.Console.WriteLine ("abc"); } } Error de compilacin a.cs (5,1): error cs0122: 'yyy.abc () es inaccesible debido a su nivel de proteccin.

Cuando decimos yyy.abc (), por qu el punto? yyy es el nombre de la clase y abc () es el nombre de la funcin. Cada uno de estos nombres puede ser tan grande como desee, por lo que para separarlas una de punto se utiliza. As, cuando se quiere acceder a una funcin que pertenece a otra clase, puede hacerlo especificando el nombre de clase y nombre de la funcin separados por un punto. El punto es como el punto y coma. Los diseadores del lenguaje quera un poco de carcter

como un separador entre el nombre de la clase y el nombre de la funcin, optaron por el punto, que podra haber optado tambin por el punto y coma de nuevo. Ahora se darn cuenta de por qu decimos Console.WriteLine. Obviamente, esto significa que la consola es una clase y dentro de la consola de la clase no es una funcin llamada WriteLine. Pero para su consternacin, en la ejecucin de este programa sigue recibiendo un error. Pues bien, pocas personas consiguen lo que quieren, sin embargo, menos an lo que quiere conseguir! Usted puede querer una cosa en particular, pero no lo conseguir a menos que la otra parte le da el permiso para tomarlo, usarlo o compartirlo. Su nica otra opcin es dar la batalla! Nos da un error aqu, porque no hemos utilizado la palabra pblico. La idea detrs de C # es su facilidad de uso en la red. Y la nica manera que usted puede utilizarlo en la red es por medio de medidas de seguridad. As que en C # la regla por defecto es - no puede utilizar nada menos que explcitamente se concedi el permiso. Siguiente pregunta. Cmo se puede conceder el permiso necesario? Siendo su propia no-violenta, C # concede permiso mediante el uso de la palabra pblico. Cuando decimos pblica, nos referimos al mundo en general. Por lo tanto, comenzando con la palabra pblico que estamos diciendo que todo el mundo est permitido el uso de esta funcin ya que estn explcitamente que la concesin de derechos. Si usted no usa la palabra pblico que le dar un error de acceso. Para rectificar el error, agregue la palabra pblico tal como lo han hecho a continuacin.
a.cs clase de zzz { static void Main () { yyy.abc (); } } clase yyy { public void abc () { System.Console.WriteLine ("abc"); } }

Salida abc

Por ltimo, tenemos el cdigo correcto! Mira, uno de los grandes ironas de la vida es el hecho de que cuando por fin dominar un trabajo duro, que hacen que parezca fcil! Mediante el uso de la palabra pblico en frente de la funcin de abc, ahora podemos llamarlo desde zzz especificando yyy.abc (); Ahora que la funcin se llama, WriteLine muestra 'abc'. El siguiente ejemplo va a mejorar su comprensin.

a.cs clase de zzz { static void Main () { yyy.abc (); ABC (); zzz.abc (); } public void abc () { System.Console.WriteLine ("abc en zzz"); } } clase yyy { public void abc () { System.Console.WriteLine ("abc"); } } Salida abc abc de zzz abc de zzz

Ahora vamos un paso ms all. En el programa anterior tenemos dos funciones de ABC, uno en la clase zzz y uno en yyy clase. Si desea llamar a la una de yyy luego dices yyy.abc (), pero si desea llamar a la de zzz luego dices zzz.abc () o ABC (). El abc function (), por s mismo, le preguntar qu clase es? Desde abc () es en s zzz, C # se supone que zzz.abc (), por implicacin, si la funcin existe dentro de la misma clase, es opcional escribir el prlogo de la funcin con el nombre de la clase. Cuando se ejecuta este programa, yyy.abc () llamar a la funcin en la clase abc yyy y WriteLine mostrar 'abc'.Posteriormente, tanto el abc () y zzz.abc () llamar a la funcin en la clase abc zzz. Y en cada caso WriteLine mostrar 'abc en zzz ". Por lo tanto, si no delante del nombre de la funcin con el nombre de la clase, C # va a agregar el nombre de la clase en la que est llamando a la funcin. En nuestro caso es zzz.

2
Los espacios de nombres
Normalmente, los estudiantes tienen una confianza implcita en sus maestros. Porque ellos saben que si un ciego gua a otro ciego, ambos caern en el hoyo. Sin embargo, nuestra filosofa es que un buen maestro tiene que ser un mentiroso, incluso mejor! De acuerdo con esta creencia, en un principio le dijimos que WriteLine es el nombre de una funcin. Entonces les dijimos que el nombre no es WriteLine, es System.Console.WriteLine. Pero incluso eso no es cierto. Ahora viene el momento de la verdad. Consola es en realidad el nombre de una clase. S, confan en nosotros! No hay lobo llorando aqu. La consola de clase tiene una funcin llamada WriteLine. De ah el nombre se convierte ahora en Console.WriteLine. Sin embargo, eso deja fuera del sistema de la palabra. Ahora, qu sistema quiere decir? Pues bien, un nmero de funciones como WriteLine estn disponibles en C #. Algunas funciones le permiten imprimir, algunos permitir la escritura de datos en el disco y los dems le permite crear grficos. El problema que se plantea con es - cmo se puede recordar qu funcin cumple con qu propsito? No tendra ms sentido si se agrupan de forma lgica funciones similares juntos? Por lo tanto, Microsoft pens que todas las funciones que pueden escribir en la pantalla podra ser parte de una clase. Todas las funciones que le permiten trabajar con las imgenes podran ser parte de otra clase. Pero incluso entonces, tendr demasiadas funciones en una clase. As que pensaron en tener un nico grupo de mayor lgica.De tal manera que todas las funciones que tienen algo que ver con la pantalla, es decir, si usted est dibujando o escribiendo el texto, se agrupan de nuevo en una instancia superior. Por lo tanto todas las clases que tienen que ver con la interaccin con una base de datos podran entrar en un grupo llamado de Datos. El segundo problema que se plantea es el de la colisiones de nombres. Qu queremos decir con eso? Ahora bien, nada me puede parar de crear mi propia clase llamada consola, e incluyen una funcin llamada WriteLine en el mismo. Pero, cmo saber qu C # consola me refiero? La que hemos creado nosotros mismos, o la que Microsoft ya ha creado. Con el fin de resolver estos problemas Microsoft decidi tomar clases y ponerlas en los espacios de nombres. Qu es un espacio de nombres? Se trata simplemente de una palabra. As que, lgicamente, puede agrupar todo como espacios de nombres por. De la explicacin anterior que tendra por ahora adivinado que el Sistema no es ms que un espacio de nombres. Los programas siguientes le ayudarn a hacer de este concepto claro de cristal.
a.cs clase de zzz

{ static void Main () { yyy.abc (); ABC (); zzz.abc (); } public void abc () { System.Console.WriteLine ("abc en zzz"); } } Vijay espacio de nombres { clase yyy { public void abc () { System.Console.WriteLine ("abc"); } } } Error del compilador a.cs (5,1): error CS0246: El tipo o "yyy" espacio de nombres no se pudo encontrar (falta una directiva using o una referencia de ensamblado?)

En el programa anterior, el nico cambio que hemos hecho es que ahora hemos incluido la yyy clase en un espacio de nombres llamado Vijay. Al hacerlo te dars cuenta de que el mismo programa que funcionaba antes ya no funciona. Esto se debe a yyy se coloca en un espacio de nombres Vijay. Un espacio de nombres no es ms que una palabra con una llave de apertura y cierre. Toda la clase se incluye dentro del espacio de nombres. Si desea acceder a una funcin que pertenece a la clase yyy de otra clase entonces la nica forma de hacerlo es diciendo vijay.yyy.abc (); As se especifica el espacio de nombres primero y luego el nombre de la clase, seguido por el nombre de la funcin, cada uno de ellos separados por puntos. As como el urdu, se lee cualquier cosa, desde la derecha y no la izquierda. Comenzamos con el nombre de una funcin, entonces el nombre de la clase y lo que queda es el espacio de nombres. Aqu zzz no se ha dado un espacio de nombres. Si no se especifica un espacio de nombres de forma predeterminada la clase se incluye en un espacio de nombres global. Ahora cambia yyy.abc (); de vijay.yyy.abc () y ver el error desaparece.
a.cs clase de zzz { static void Main () { vijay.yyy.abc (); ABC (); zzz.abc (); } public void abc ()

{ System.Console.WriteLine ("abc en zzz"); } } Vijay espacio de nombres { clase yyy { public void abc () { System.Console.WriteLine ("abc"); } } } Salida abc abc de zzz abc de zzz

Apostamos sus rostros estn radiantes! Parece que el secreto de la felicidad no est en hacer lo que uno le gusta hacer, sino en querer lo que uno tiene que hacer. Hemos tenido que deshacerse de el error que hemos conseguido. El error ha desaparecido, el programa se ejecuta como se anuncia y se genera el mismo resultado que lo hizo anteriormente. As, todas las clases y funciones creadas por Vijay puede ser incluido en un espacio de nombres llamado Vijay. Si Sonal crea un espacio de nombres por su nombre luego se pueden incluir todas las funciones y las clases creadas por ella en el espacio de nombres personales. Por lo tanto no habr conflictos de nombres en absoluto. Estos espacios de nombres que son creados por nosotros se llaman espacios de nombres definidos por el usuario mientras que el sistema es un espacio de nombres predefinido. Por lo tanto es un espacio de nombres del sistema en el que una clase llamada consola fue creado, el cual contena una funcin llamada WriteLine. As, el concepto de espacio de nombres nos permite crear grupos lgicos. As que todas las clases relacionadas con el XML puede estar en un espacio de nombres llamado XML, web puede ser en un espacio web y as sucesivamente y as sucesivamente. Pero el nico problema ahora es que cuando empieza a escribir el cdigo tiene que especificar el espacio de nombres primero, luego el nombre de la clase seguido por el nombre de la funcin. Bueno, todo est disponible, pero por un precio! Nuestro consuelo es que es un precio muy pequeo a pagar.
a.cs espacio de nombres mukhi { clase de zzz { static void Main () { vijay.yyy.abc (); ABC (); zzz.abc ();

mukhi.zzz.abc (); } public void abc () { System.Console.WriteLine ("abc en zzz"); } } } Vijay espacio de nombres { clase yyy { public void abc () { System.Console.WriteLine ("abc"); } } } Salida abc abc de zzz abc de zzz abc de zzz

En el programa anterior, tenemos dos clases de zzz y yyy. La zzz clase se incluye en un espacio de nombres llamado mukhi y el yyy clase se incluye en un espacio de nombres llamado Vijay. As que cuando decimos abc (), en Principal Principal, se encuentra en zzz, por lo que en realidad se est escribiendo mukhi.zzz.abc (); Esto se debe a C # automticamente se expanda ya que la funcin ABC est disponible en la misma clase. Por lo tanto, es a su discrecin en cuanto a cmo usted desea escribir. Se puede decir abc (), zzz.abc () o mukhi.zzz.abc (); finalmente se expanden a nombre de namespace.classname.function. C # agrega el nombre del espacio de nombres y el nombre de la clase, incluso si no se refieren especficamente a escribirlo. El concepto de espacios de nombres no es muy difcil de entender. Adems, permite una agrupacin jerrquica de las clases. Nos dice que las clases se agrupan de forma lgica. Tambin evita las clases de tener el mismo nombre.
a.cs clase de zzz { static void Main () { Console.WriteLine ("abc en zzz"); } } Error del compilador a.cs (5,1): error CS0246: El tipo o la 'Consola' espacio de nombres no se pudo encontrar (falta una directiva using o una referencia de ensamblado?)

Si no incluir nuestra clase en un espacio de nombres, se convierte en parte integrante de 'el espacio de nombres global ". Este espacio de nombres no contiene una clase llamada de la consola. Ya habamos mencionado anteriormente que la consola de la clase est contenida en el Sistema de

espacio de nombres. No queremos escribir el prlogo de la clase Console con el sistema de espacio de nombres de cada uno y cada vez. La nica razn es que los dedos se desgastan escribiendo el Sistema de palabra una y otra vez. Por tanto, C # nos permite usar un atajo a travs del cual evitamos el dolor de tener que seguir escribiendo el nombre de un espacio de nombres una y otra vez.
a.cs using System; clase de zzz { static void Main () { Console.WriteLine ("abc en zzz"); } } Salida abc de zzz

El secreto aqu no es hacer grandes cosas, pero hacer una cosa pequea en una gran forma. Nos ningn error, simplemente mediante el empleo de la palabra con la que forma parte del lenguaje C #. Todo lo que hace es utilizar cada vez que ve slo el nombre de una clase, va y aade (en este caso) el Sistema de la palabra. Por lo tanto no tenemos que escribir la palabra System y otra vez. Esto funciona de la forma abreviada lo hace.
a.cs using System; clase de zzz { static void Main () { yyy.abc (); } } Vijay espacio de nombres { clase yyy { public void abc () { Console.WriteLine ("abc"); } } } Error del compilador a.cs (6,1): error CS0246: El tipo o "yyy" espacio de nombres no se pudo encontrar (falta una directiva using o una referencia de ensamblado?)

Ahora tenemos un error de yyy y no para la consola como la clase yyy pertenece al espacio de nombres Vijay y no el espacio de nombres global. Debido a la palabra clave using, C # agrega el sistema de espacio de nombres a YYY System.yyy.abc produciendo y se da cuenta que el Sistema no contiene una clase llamada yyy. Por lo tanto el error.

a.cs using System; con Vijay; la clase {zzz static void Main () { yyy.abc (); } } Vijay espacio de nombres { clase yyy { public void abc () { Console.WriteLine ("abc"); } } } Salida abc

El error se desvanece como C # primero intenta System.yyy.abc obtiene un error, a continuacin, intenta vijay.yyy.abc y tiene xito. As, al tener dos usando es que no tenemos que escribir el vijay espacios de nombres o el sistema nunca ms.
a.cs using System; utilizando mukhi; con Vijay; espacio de nombres mukhi { clase de zzz { static void Main () { yyy.abc (); ABC (); zzz.abc (); zzz.abc (); } public void abc () { System.Console.WriteLine ("abc en zzz"); } } } Vijay espacio de nombres { clase yyy { public void abc ()

{ System.Console.WriteLine ("abc"); } } } Salida abc abc de zzz abc de zzz abc de zzz

Podemos tener tantos utilizando es como nos gusta y el compilador tratar de uno en uno. Si ninguno de ellos coincide que recibir un error. En este caso se tratar de 3 veces con el sistema, y Vijay Mukhi y si no coincide ninguno, obtendr un error.
a.cs utilizando System.Console; clase de zzz { static void Main () { WriteLine ("abc en zzz"); } } Error del compilador a.cs (1,7): error CS0138: Una directiva de espacio de nombres utilizando slo puede aplicarse a espacios de nombres, 'System.Console' es una clase no es un espacio de nombres

Despus de la palabra con la que slo puede escribir el nombre de un espacio de nombres. System.Console es una combinacin de clase de espacio de nombres que no est permitido.

Edificio de la Jerarqua
En C # a organizar las clases utilizando espacios de nombres. Ahora vamos a descubrir en la medida en que podamos ir a la medida como la organizacin de las clases.
a.cs clase de zzz { static void Main () { mukhi.vijay.yyy.abc (); } } espacio de nombres mukhi { Vijay espacio de nombres { yyy clase {

public void abc () { System.Console.WriteLine ("abc"); } } } } Salida abc

En este programa contamos con un espacio de nombres dentro de un espacio de nombres es decir, dentro del espacio de nombres mukhi tenemos otra Vijay espacio de nombres. As, los espacios de nombres son "jerrquica". Si desea acceder a la funcin abc en yyy tienes que especificar en el formulario-namespace.classname.functionname. Por lo tanto, el nombre completo es ahora mukhi.vijay.yyy.abc (); Una vez que la funcin es llamada, WriteLine se mostrar 'abc'. Con el fin de diferenciar entre los varios nombres separados por puntos, siempre lea al revs. Leyendo al revs, el primero es el nombre de la funcin a continuacin el nombre de clase y los nombres a partir de entonces todo estar espacios de nombres. Alternativamente, puede especificar directamente el espacio de nombres como mukhi.vijay, como lo hemos hecho a continuacin. Este programa genera la misma salida que antes, se imprime abc.
a.cs clase de zzz { static void Main () { mukhi.vijay.yyy.abc (); } } espacio de nombres mukhi.vijay { clase yyy { public void abc () { System.Console.WriteLine ("abc"); } } } Salida abc

Aqu tenemos un nico espacio de nombres por el mukhi.vijay nombre. El mukhi.vijay nombre es en realidad un acceso directo para la definicin de un espacio de nombres llamado mukhi que contiene un espacio de nombres llamado Vijay. En este programa, slo tenemos dos espacios de nombres. Pero se puede ampliar para incluir una serie de espacios de nombres, dependiendo del nivel de la jerarqua requerida por el programa.

Podemos comparar esto con una organizacin. Consideremos mukhi a ser el nombre de la compaa. Dentro de que usted tiene una empresa sub-o una divisin llamada Vijay, que crea propias clases. Como tal, el nivel de la jerarqua puede ser expandido. Antes de entender el programa de la prxima vamos a hacer una pregunta simple. Por qu utilizar las clases? Las clases se utilizan, ya que ofrecen un gran nmero de funciones. No utilizar las clases debido a las variables que se pueden crear dentro de ellos, utiliza las clases para las funciones que ofrecen. Recuerde, usted llama a una funcin utilizando el formularionamespace.classname.functionname.

Operaciones con archivos


a.cs clase de zzz { static void Main () { File.Copy ("c: \ \ CSharp \ \ a.txt", "c: \ \ CSharp \ \ b.txt", true); } } Error del compilador a.cs (5,1): error CS0246: El tipo o 'Archivo' el nombre de espacio de nombres no se pudo encontrar (falta una directiva using o una referencia de ensamblado?)

Nuestro prximo programa te iluminar en algo ms buscados - El arte de la copia. Ah! Finalmente algo de inters! Este programa introduce la funcin de 'Copiar'. Le permite duplicar un archivo. El archivo es una clase y que tiene una funcin llamada Copy, que es esttica. 'A.txt' El primer parmetro es el archivo de origen, es decir el archivo, que desea duplicar. 'B.txt' El segundo parmetro es el archivo de destino, es decir el archivo que queremos copiar. Tenga en cuenta que debe especificar la ruta completa del nombre de archivo. 'Verdadero' El ltimo parmetro implica que si el archivo existe entonces ser sobreescrito. Si el archivo no existe, ser creado y el contenido del archivo de origen se copiarn en la misma. Y justo cuando pensaba que haba dominado el arte de copiar el programa vuelve con un mensaje de error. El error dice que C # no sabe lo que es File.Copy. El problema es que el nombre del espacio de nombres es System.IO. As que hay que especificar el espacio de nombres tambin. Agregue el espacio de nombres y ejecute el programa.
a.cs clase de zzz { static void Main () { System.IO.File.Copy ("c: \ \ CSharp \ \ a.txt", "c: \ \ CSharp \ \ b.txt", true); } }

El programa no genera errores de compilacin. Cree un archivo denominado a.txt con un texto antes de ejecutar este programa. Ejecutar este programa y abra 'b.txt' el archivo. Por ltimo, la tarea ha sido cumplida! Ahora tiene el contenido de a.txt copiados en b.txt. Nuestro prximo programa presenta otra funcin llamada "Eliminar".
a.cs clase de zzz { static void Main () { System.IO.File.Delete ("c: \ \ CSharp \ \ a.txt"); } }

El programa anterior toma el nombre de un fichero como parmetro. Esta funcin elimina el archivo especificado desde el disco. Dar el comando dir en el smbolo del sistema y se encuentra que el archivo ha sido borrado.

Cada lengua te ofrecen millones de tales funciones como copiar y borrar. Estas funciones siempre estaban disponibles, pero C # ha ido un paso ms all y realiz estas funciones forma parte de una clase.Ellos son ahora parte de un espacio de nombres. Por lo tanto se hace ms fcil para categorizar las funciones. No es ms que una cuestin de detalle si usted debe o no debe categorizar.

3
Constructores y destructores
Nuevo
Consideremos el siguiente programa.
a.cs clase de zzz { static void Main () { yyy.abc (); } } clase yyy { pblica abc vaco () { System.Console.WriteLine ("abc"); } } Error del compilador a.cs (5,1): error CS0120: Una referencia de objeto es necesaria para el campo no esttico mtodo, o 'yyy.abc () "propiedad

Este programa contiene una clase llamada yyy que tiene una funcin llamada ABC. En main () que est utilizando la sintaxis de yyy.abc () para llamar a la funcin abc como lo hicimos anteriormente. Dentro de la funcin abc tenemos el cdigo de la funcin que ABC se imprimir la cadena "abc". En la elaboracin de este programa que usted obtendr un error tan incomprensible como siempre! Pero, cmo es que cuando nos encontramos con este programa anteriormente no tuvimos un error? Si todava est confundido, se despierta y huele el caf! No te fijaste hemos eliminado la palabra "esttico" mientras dice ABC public void (). Por lo tanto obtenemos un error. En nuestros programas anteriores, cuando escribimos la funcin de ABC que haba escrito la palabra esttica que le falta ahora. No, no vamos a decir para aadir la palabra esttica y ejecutar el programa. No somos tan predecibles! Por el contrario, vamos a hacer algo muy diferente e interesante. Teniendo esto en mente, consideremos el siguiente programa.
a.cs clase de zzz {

static void Main () { yyy un; a.abc (); } } clase yyy { pblica abc vaco () { System.Console.WriteLine ("abc"); } }

Error del compilador a.cs (6,1): error cs0165: uso de la variable local no asignada 'a'

Antes de ver en este programa vamos a tener en nuestras bases claras. Muchas veces hemos usado la instruccin 'int i' lo que significa que yo era una variable que se pareca a un int. Cuando usamos 's cadena' de la declaracin, eso significa que s es una variable que pareca cuerda. Del mismo modo, en este programa que estamos diciendo yyy una. Esto implica que la 'a' se parece a yyy. Qu es yyy? Es el nombre de una clase. Aqu no los llamamos 'a' una variable, lo llamamos un objeto. Un objeto y una variable se puede utilizar indistintamente. Anteriormente, cada vez que quera llamar a un miembro de una clase diramos yyy.abc (); es decir, la clase el nombre de nombre de la funcin de punto. Pero en el actual programa que estamos diciendo a.abc (); Estamos usando el mismo punto, pero ahora da un error diciendo - "El uso de la variable local no asignada '. Ntese que la palabra miembro es anlogo con la palabra funcin. Pero las cosas todava parecen no ms claro. Por lo tanto, vamos a dar un paso ms y aadir otra declaracin a = new yyy (); partido de su cdigo con el que aparece a continuacin.
a.cs clase de zzz { static void Main () { yyy un; un nuevo yyy = (); a.abc (); } } clase yyy { pblica abc vaco () { System.Console.WriteLine ("abc"); } } Salida abc

La palabra o la nueva palabra clave debe ser seguido por el nombre de una clase; No se puede sustituir por cualquier otra cosa, debe ser una clase. En nuestro caso, hemos dado la declaracin como nueva yyy ().yyy es el nombre de una clase existente. Pero por qu tienen entre parntesis despus del nombre de la clase? Los '(' y ') de los soportes son parte de la sintaxis. Y usted sabe muy bien por ahora que no se puede discutir con la sintaxis. Por lo tanto, es en este punto, es decir, despus de decir nueva, que el objeto 'a' que se parece a yyy se crea. Podramos haber llamado tambin el objeto 'a' una instancia de la clase yyy. Desde el yyy clase tiene slo una funcin que se asigna memoria para esa funcin nica. Ahora tenemos un objeto 'a' que se parece a yyy clase. Una vez que se crea el objeto, que puede ser utilizado para acceder a la funcin de yyy clase. Por lo tanto, ahora si decimos a.abc () no se producir un error. As, un objeto no es ms que una instancia o una ocurrencia de una clase. Por lo tanto, 'a' es una instancia de la clase yyy. As es como se puede crear instancias de un objeto. Con el fin de crear un objeto que se debe utilizar "nuevo" de la palabra clave. Nuestro prximo programa le ayudar a obtener una mejor comprensin de este concepto.
a.cs clase de zzz { static void Main () { int i; i = new int (); } }

En primer lugar tenemos int i, lo que significa que se parece a int. Entonces tenemos que i = new int (); La ejecucin de este programa no genera ningn error. Pero hasta ahora siempre hemos usado int i nunca nos ha creado el objeto utilizando new int i (). Esto es debido a que C # lo hace internamente para nosotros. Esto nos ahorra la molestia de hacerlo. Entonces por qu no hacerlo en C # para todos los dems objetos que creamos? Esto es debido a que C # slo reconoce dos tipos de clases. El primer tipo es el que el compilador de C # sabe de antemano. int, long, bool, y la cadena son las clases que entran en esta categora. Estas son las clases predefinidas. Sin embargo, los llamamos los tipos de datos debido a que en C y C + + que se llama tipos de datos y C # tiene un legado de C y C + +. As que, tcnicamente, cuando decimos int i lo hace i = new int (); internamente. El segundo tipo de clases de C # que reconoce son los que creamos es decir, las clases definidas por el usuario. Para las clases definidas por el usuario, tenemos que crear objetos de nosotros mismos. Por lo tanto otra cosa que los datos bsicos de los tipos debe crearse explcitamente. As que cuando decimos "yyy un" no vamos a crear el objeto en este momento. Slo estamos declarando que el objeto sea de tipo yyy. Es slo cuando se utiliza "nuevo" de la palabra que el objeto se crea y se asigna la memoria para el mismo. Por lo tanto, cuando tenemos nuestras propias clases, que es el momento en que un nuevo uso. Sin nueva no se puede crear un objeto.

Esttico

Usted est seguro que va a beneficiarse de la paciencia que han demostrado hasta ahora. Para averiguar cmo hacerlo, vamos a seguir el siguiente programa.
a.cs clase de zzz { static void Main () { yyy un; un nuevo yyy = (); a.abc (); yyy.pqr (); } } clase yyy { pblica abc vaco () { System.Console.WriteLine ("abc"); } pqr public void () { System.Console.WriteLine ("pqr"); } } Salida abc pqr

En este programa tenemos dos funciones ABC y PQR. Es de importancia hacer notar que la funcin tiene pqr la palabra esttica mientras que ABC no lo hace. Si desea acceder a la funcin esttica pqr dices yyy.pqr () y para acceder a la funcin esttica abc no dices a.abc (); No se puede hacer es decir, la inversa no puedes decir que a.pqr () y yyy . ABC ().
a.cs clase de zzz { static void Main () { yyy un; un nuevo yyy = (); yyy.abc (); a.pqr (); } } clase yyy { pblica abc vaco () { System.Console.WriteLine ("abc"); }

pqr public void () { System.Console.WriteLine ("pqr"); } } Error del compilador a.cs (7,1): error CS0120: Una referencia de objeto es necesaria para el campo no esttico, mtodo o 'yyy.abc () "propiedad a.cs (8,1): error CS0176: 'yyy.pqr ()' Miembro esttico no se puede acceder con una referencia a la instancia, sino que calificar con un nombre del tipo de cambio

"Esttica" la palabra implica "libre". Esttico significa que usted puede acceder a un miembro o una funcin sin necesidad de crear un objeto. Por fin, usted est disfrutando de los frutos de la paciencia! Tenga en cuenta que la funcin principal de zzz es esttica. Esto es porque no estamos creando un objeto que se parece a zzz. El punto crucial es que si usted no desea utilizar "nuevo" y sin embargo, utilizar la funcin, entonces debe hacer que la funcin esttica. En ambos casos un punto se utiliza para hacer referencia a la funcin. La nica diferencia es que un miembro esttico pertenece a la clase y como tal, no es necesario crear un objeto para acceder a ella. Por otro lado, un miembro no esttico, que es el valor predeterminado, slo se puede acceder a travs de un objeto de la clase. As WriteLine es una funcin esttica en la consola, ya que no crea un objeto que se parece a la consola para acceder a ella.
a.cs clase de zzz { static void Main () { System.Console.WriteLine (yyy.i); } } clase yyy { public int i = 10; } Error del compilador a.cs (5,26): error CS0120: Una referencia de objeto es necesaria para el campo no esttico, mtodo o propiedad 'yyy.i'

Por qu nos da un error? Piense por el pensamiento es el trabajo ms duro que hay, que es probablemente la razn por qu tan pocos se dedican a l. Si an no lo tengo, vamos a iluminar. Las mismas reglas para la esttica se aplican a las funciones, as como las variables. Por lo tanto se obtiene el error anterior.
a.cs clase de zzz { static void Main () {

yyy un nuevo yyy = (); yyy yyy b = new (); aj = 11; System.Console.WriteLine (AJ); System.Console.WriteLine (BJ); yyy.i = 30; System.Console.WriteLine (yyy.i); } } clase yyy { public static int i = 10; public int j = 10; } Salida 11 10 30

Una variable esttica pertenece a la clase. Por lo tanto si creamos una variable esttica i, no importa cuntos objetos que creamos que se parecen a yyy, habr uno y slo un valor de i ya que slo hay una variable que he creado en la memoria. As, acceder a una variable esttica por prologar con el nombre del nombre de clase, no de objeto. Si la variable no es esttico como j, entonces tenemos que utilizar la sintaxis como se explic anteriormente es decir, nombre del nombre del objeto de punto de la variable. As, cada vez que creamos un objeto que se parece a yyy estamos creando un nuevo / otra copia de la variable j en la memoria. Ahora tenemos dos j est en la memoria uno por uno y otro para b. De este modo j se llama una variable de instancia a diferencia de i. Cuando se cambia la variable j de una a 11, la j de b permanecer en 10. As funciones se crean en la memoria slo una vez, con independencia de la palabra esttica. Si una clase no tiene ninguna instancia o variables estticas no entonces no tiene sentido crear varias instancias del objeto como no habr manera de distinguir entre las copias creadas.

Constructores
a.cs clase de zzz { public void Main () { yyy un; System.Console.WriteLine ("Principal"); un nuevo yyy = (); } } clase yyy { yyy pblica () { System.Console.WriteLine ("yyy");

} } Salida Principal yyy

En el programa anterior tenemos una clase llamada yyy. Tambin tenemos una funcin llamada yyy que pasa a ser tener el mismo nombre que el nombre de la clase. Tenemos un amigo que se llama Bunty.Coincidentemente, el nombre de su perro tambin es Bunty! De manera similar, es absolutamente legal tener una funcin por el mismo nombre que el de la clase. En este primer caso vemos principal y luego vemos yyy muestra en la pantalla lo que significa que el yyy function () se llama de forma automtica. Tenga en cuenta, no nos han llamado la yyy funcin explcitamente. Esto pasa a ser una funcin especial y que se llama un 'constructor'. En un principio estamos diciendo yyy una. De esta manera estamos especificando que 'a' se parece a yyy. No estamos creando un objeto que se parece a yyy. La siguiente sentencia tiene System.Console.WriteLine, que se imprimir 'principal'. A partir de entonces, usando la nueva que estamos creando un objeto a. Es en este punto que C # llama al constructor es decir, se llama a la funcin yyy ().Ahora ver 'yyy' muestra. Esto viene a demostrar que tan pronto como un objeto de una clase se crea, C # llama automticamente al constructor. Un constructor se llama en el momento del nacimiento o la creacin del objeto. Se tiene que tener el mismo nombre que el nombre de la clase.
a.cs clase de zzz { public void Main () { yyy un; System.Console.WriteLine ("Principal"); un nuevo yyy = (); a.yyy (); } } clase yyy { yyy pblica () { System.Console.WriteLine ("yyy"); } } Error del compilador a.cs (8,1): error CS0117: 'yyy' no contiene una definicin de "yyy"

En este caso, estamos llamando a la funcin con la yyy es decir, la sintaxis apropiada diciendo a.yyy (). Ahora bien, ejecutar el compilador. Desconcertado por el error? El error dice que 'yyy' no contiene una definicin de "yyy". El yyy clase contiene una funcin llamada yyy que me llamaron en el ejemplo anterior. Tiene amnesia C # desarroll de repente? Qu sali mal? Bueno, no se

puede llamar a esta funcin utilizando a.yyy () o yyy.yyy () El problema es que cuando se tiene una funcin con el mismo nombre que el de la clase no se puede llamar en absoluto. No se llama de forma automtica. C # no da a nadie la autoridad para llamar a dicha funcin. Se llama a esta funcin de forma automtica slo en el nacimiento. Parece anormal no es! Pero cul es el propsito de contar con los constructores? Un constructor se puede utilizar en casos en los que cada vez que se crea un objeto y se desea algo de cdigo que se ejecutar automticamente. El cdigo que desee ejecutar deber ser puesto en el constructor.Ese cdigo puede ser cualquier cosa, se podra comprobar si hay espacio en el disco duro, podra crear un archivo o puede conectarse a la red y llevar un archivo a travs. Lo que el cdigo se va a hacer variar de persona a persona. Para entender cmo y cuando el constructor se llama, vamos a tener en cuenta el ejemplo siguiente. Ahora quite "pblico" de la palabra frente a yyy () como lo hemos hecho a continuacin.
a.cs clase de zzz { public void Main () { yyy un; System.Console.WriteLine ("hola"); un nuevo yyy = (); } } clase yyy { yyy () { System.Console.WriteLine ("const yyy"); } } Error del compilador a.cs (7,3): error CS0122: 'yyy.yyy ()' es inaccesible debido a su nivel de proteccin.

Obviamente, usted obtendr un error. Esto se debe a la palabra sin que el pblico es la funcin de la propiedad privada. Y cuando usted entrar ilegalmente en la propiedad privada que tiene que afrontar las consecuencias. En nuestro caso nos encontramos ante un error. Al hacer que el pblico en funcin de cada uno puede utilizarlo, es ahora pasa a ser propiedad pblica! Si el constructor es privado, entonces nadie puede crear un objeto que se parece a yyy. Cree usted que los constructores pueden devolver valores? Vamos a probarlo y descubrir por nosotros mismos.
a.cs clase de zzz { public void Main () { yyy un;

System.Console.WriteLine ("hola"); un nuevo yyy = (); } } clase yyy { yyy public int () { System.Console.WriteLine ("const yyy"); } } Error del compilador a.cs (12,12): error CS0542: 'yyy': los nombres de miembros no puede ser el mismo que su tipo envolvente

La ejecucin del programa anterior genera un error. Se dice que yyy miembro es decir, no puede ser la misma que la clase yyy tipo envolvente, es decir. Ahora, eso es un error que seguramente no esperaba. Vamos a analizar por qu tenemos este error. Aqu estamos diciendo yyy int pblica que implica que el yyy function () devuelve un int. yyy () es un constructor y se llama automticamente a la vez que se crea un objeto. Si un constructor es devolver un valor, a la que debe devolver el valor a? Puesto que se llama de forma automtica, no hay nada que pueda aceptar el valor de retorno. As, los constructores no pueden devolver valores. Adems, cuando un constructor se llama, es un objeto en el acto de creacin. An no ha sido creado. La palabra clave new asigna memoria para la primera de las funciones y las variables. Despus de esto, llama al constructor. Cuando el constructor termina, entonces decimos que el objeto ha sido creado. As, el constructor no tiene a nadie para devolver los valores a. Ahora que sabemos que los constructores no devuelven valores volvamos vaco en su lugar.
a.cs clase de zzz { public void Main () { yyy un; System.Console.WriteLine ("hola"); un nuevo yyy = (); } } clase yyy { yyy public void () { System.Console.WriteLine ("const yyy"); } } Error del compilador

a.cs (12,13): error CS0542: 'yyy': los nombres de miembros no puede ser el mismo que su tipo envolvente

A pesar de que estn volviendo vaco, nos sale el mismo error. Esto es debido a que C # es muy seguro de lo que dice. Cuando usted pide prestado de otras personas que lo hacen con el pretexto de que lo va a volver. Es una historia diferente que nunca lo hace! Rara vez lo que dice. Sin embargo, cuando C #, dice que los constructores no pueden devolver los valores que significa "constructores no pueden devolver valores", ni siquiera 'vaco'. Recuerde, no hay nada que pueda aceptar los valores de retorno. Por lo tanto, incluso vaco no puede ser aceptada. Cuando una funcin devuelve un vaco que significa que volver sin ningn valor en absoluto. Para un constructor, el retorno de la palabra no tiene ningn sentido en absoluto.

Constructores con parmetros


As como pasar parmetros a otras funciones, tambin puede pasar parmetros a los constructores.
a.cs clase de zzz { public void Main () { yyy un; System.Console.WriteLine ("hola"); a = new yyy ("no"); } } clase yyy { yyy pblica () { System.Console.WriteLine ("const yyy"); } } Error del compilador a.cs (7,3): error CS1501: No hay sobrecarga de 'yyy' mtodo toma '1 'argumentos

Ustedes ya son conscientes del hecho de que los parmetros se pasan a las funciones, mientras que los llama. Del mismo modo, vamos a pasar un parmetro a la yyy constructor al crear el objeto a, porque es en este punto que el constructor se llama. Por lo tanto estamos diciendo a = new yyy ("no"). Sin embargo, en la compilacin de este programa se obtiene un error. En este caso, el constructor se llama con el 'no' una cadena como un parmetro. Pero no hay ninguna variable en el yyy constructor para guardar el valor "no". Aadir 'cadena de s' en el constructor de yyy y ver el error desaparece.
a.cs clase de zzz { public void Main () { yyy un;

System.Console.WriteLine ("hola"); a = new yyy ("no"); } } clase yyy { yyy pblica (String s) { System.Console.WriteLine (s); } } Salida hola no

En WriteLine primera mostrar 'hola'. Entonces tenemos un yyy constructor que toma una cadena "no" como un parmetro y la acepta con una variable s. As pues, el momento en que se llama el constructor de yyy 'no' en la pantalla. Esto es porque el constructor yyy contiene cdigo que se imprimir el valor almacenado en la variable s. As es como constructores con parmetros se llaman. Hasta ahora hemos creado una sola instancia de la clase yyy. En el siguiente programa que estamos creando dos instancias de la yyy clase, 'a' y 'b'.
a.cs clase de zzz { public void Main () { yyy a, b; System.Console.WriteLine ("hola"); a = new yyy ("no"); b = new yyy (); } } clase yyy { yyy pblica (String s) { System.Console.WriteLine (s); } }

Error del compilador a.cs (8,3): error CS1501: No hay sobrecarga de 'yyy' mtodo toma '0 'argumentos

Si bien la creacin del objeto 'a' del constructor de yyy se est pasando un parmetro 'hola'. En el caso de 'b' el objeto el constructor ser llamado sin ningn parmetro. Sin embargo, en nuestro programa tenemos slo el cdigo para el constructor con parmetros. Pruebe a ejecutar este

programa y se obtiene un error diciendo que el mtodo tiene yyy 0 argumentos. Esto es porque no tenemos cdigo para el constructor sin parmetros. Vamos a entender la razn detrs del error. En nuestros programas anteriores, no se especifica un constructor. Una pregunta pertinente en este caso sera - cmo los objetos se crean a continuacin, sin que el constructor se llama? C # es un buen samaritano, en ese momento se inserta un constructor libre. Lo hace internamente. Por su parte se inserta un constructor sin parmetros, sin ningn tipo de cdigo en la clase. Parece que estayyy () { }

Punto a considerar - en el programa anterior, cuando an no ha creado un constructor sin parmetros por qu no podemos conseguir uno gratis? Recuerde que dijimos C # es un buen samaritano? Y buenos samaritanos ayudar a los necesitados. Al ver que ya tenemos un constructor con parmetros, C # es decir, se ve otra manera, se necesita el libre lejos. Sin embargo, es slo cuando se tiene ningn constructor en absoluto que C # se derrite su corazn y le da un libre. Recuerde, aun si considera que usted tiene incluso un constructor que le quitar el libre. En el supuesto de que si usted puede proporcionar un constructor, a continuacin, con un poco de esfuerzo se puede trabajar para ofrecer a los dems tambin! Ahora la nica manera de deshacerse de el error consiste en aadir el constructor de s mismo.
a.cs clase de zzz { public void Main () { yyy a, b; System.Console.WriteLine ("hola"); a = new yyy ("no"); b = new yyy (); } } clase yyy { yyy pblica (String s) { System.Console.WriteLine (s); } yyy pblica () { System.Console.WriteLine ("malo"); } } Salida

hola no malo

Aqu, en un principio, los dos objetos 'a' y 'b' se declaran. En la siguiente instruccin que tenemos WriteLine, que mostrar 'hola'. Estamos a continuacin, crear el objeto a. En este punto el constructor con una cadena como un parmetro que se llama. Ahora se mostrar el valor almacenado en la variable s, que es 'no'. A partir de entonces, el objeto B se crea. En este punto el constructor sin los parmetros ser llamado.Este constructor contiene la instruccin WriteLine, que se imprimir "malo". Aqu, tenemos tantos constructores como nos est llamando y por lo tanto, no conseguimos ningn error. As que, esencialmente, un constructor es una funcin especial que se llama cuando se crea un objeto. No se devuelve ningn valor, ni siquiera void. En cuanto a los parmetros de ir se comporta como una funcin normal. Si los constructores no se especifican a obtener una gratis, de lo contrario, usted necesita tantos constructores como la que est llamando. De ah que en el caso anterior no se puede crear un objeto como nuevo yyy (100), ya que no tiene un constructor que acepta un int como parmetro.

Destructores
a.cs zzz clase pblica { public void Main () { aa aa a = new (); } } aa la clase pblica { pblica bis () { System.Console.WriteLine ("Constructor"); } ~ Aa () { System.Console.WriteLine ("Destructor"); } } Salida Constructor Destructor

Un destructor es una funcin con el mismo nombre que el nombre de una clase, pero a partir de la ~ personaje. Un constructor se llama al nacer, mientras que un destructor se llama a la muerte. En C # a diferencia de otros idiomas que no sabemos cuando un objeto se muere ya que a diferencia de James Bond, no tenemos una licencia para matar. As, a pesar de que el objeto a muere al final de la principal, el destructor no puede ser llamado. Por lo tanto, en C # no podemos decidir cuando el destructor se llama. Esta decisin de llamar al destructor se realiza mediante un programa en C # llama el recolector de basura.

El concepto por primera vez la moneda con la llegada de Java. En Java y C # no podemos sacar nuestros objetos de la memoria. Por lo tanto, es para el recolector de basura para decidir cundo llamar al destructor. El mundo de la programacin estaba repleta de errores debido principalmente a los programadores utilizar el nuevo para asignar la memoria y luego se olvida de cancelar la asignacin. Esto dio lugar a un concepto llamado prdidas de memoria. En la otra cara de la moneda, los programadores de cancelar la asignacin de la memoria, se olvid de l y luego accede de nuevo el objeto. Esto genera un error que ocurre al azar y difcil de precisar.
a.cs zzz clase pblica { public void Main () { aa aa a = new (); } } aa la clase pblica { pblica bis () { System.Console.WriteLine ("Constructor"); } pblica ~ aa () { System.Console.WriteLine ("Destructor"); } } Error del compilador a.cs (14,9): error CS0106: 'pblico' El modificador no es vlido para este artculo

Un destructor no puede tener modificadores como del pblico que le precede.


a.cs zzz clase pblica { public void Main () { aa aa a = new (); } } aa la clase pblica { pblica bis () { System.Console.WriteLine ("Constructor"); } ~ Aa (int i) { System.Console.WriteLine ("Destructor"); } }

Error del compilador a.cs (14,5): error CS1026:) que se espera a.cs (14,10): error CS1002:; espera a.cs (16,25): error CS1519: token no vlido '(' en la clase, estructura o declaracin de miembro de interfaz a.cs (18,1): error CS1022: definicin de tipo o espacio de nombres, o al final de su archivo de espera

Constructores vienen en abundancia con un nmero diferente de argumentos que se pasan a ellos. Sin embargo, en el caso de destructores, un tamao para todos, es decir, vienen en un solo tamao, sin parmetros. Aqu hemos creado un destructor con un int como parmetro confundiendo el compilador de C # completo. C # carece de verdaderos destructores sincrnicas o determinista, es decir destructores de ser llamado en un momento determinado en el tiempo. No puedes tener tu vida depende de cuando un destructor se llama. El urogallo comn en contra de C # es que a diferencia de C + + no es compatible con los destructores de los verdaderos.
a.cs zzz clase pblica { public void Main () { aa aa a = new (); } } aa la clase pblica { pblica bis () { System.Console.WriteLine ("Constructor"); } ~ Aa () { System.Console.WriteLine ("Destructor"); } anulacin protected void Finalize () { } } Error del compilador a.cs (18,25): error CS0111: Clase "AA" ya define un miembro llamado 'Finalizar' con los mismos tipos de parmetros

Tratamos de crear una funcin llamada Finalizar. El compilador se vuelve y nos dice que ya tenemos una funcin llamada Finalizar. Esto es extrao ya que tenemos slo una funcin Finalizar. La razn de este error es que el compilador convierte nuestro destructor de ~ aa finalizar.

Matrices
Todos los lenguajes de programacin abrazar el concepto de matrices. Una matriz es nada ms que ms de una entidad, es decir, un mltiplo del mismo tipo. En pocas palabras, cuando tenemos cinco libros, no nos limitamos a decir que tenemos cinco libros. En su lugar decimos que tenemos una serie de cinco libros. Por lo tanto, cada vez que desee almacenar varios valores de las variables que los almacenan en una matriz.
a.cs clase de zzz { public void Main () { int [] a; a = new int [3]; a [0] = 1; a [1] = 10; un [2] = 20; System.Console.WriteLine (a [0]); a [0] + +; System.Console.WriteLine (a [0]); int i; i = 1; System.Console.WriteLine (a [i]); i = 2; System.Console.WriteLine (a [i]); } } Salida 1 2 10 20

Aqu la 'a' es una matriz de enteros. Usted declara matrices con un conjunto de corchetes []. En este punto no se sabe cmo es grande la matriz ser. Para eso tenemos a = new int [3], despus de nuevo que tienen un significado int queremos crear una variable de tipo int. Estamos poniendo tres en el sentido corchetes que queremos almacenar 3 enteros. Esto crear tres enteros a [0], a [1] y [2]. Luego se inicializa con los valores de 1,10 y 20, respectivamente. Para inicializar una variable de matriz que usamos el nombre, es decir, en este caso y seguir con las de apertura y cierre entre corchetes []. Dentro de ellos ponemos el nmero de serie. La primera variable que se llama a [0], el segundo a [1] y as sucesivamente. C # al igual que la mayora de los lenguajes de programacin le gusta empezar a contar desde 0 y no 1. Por lo tanto, la ltima variable es un [2] y no a [3]. Dado que una matriz es muchos del mismo tipo, todos ellos tienen el mismo nombre. En nuestro ejemplo anterior, aunque tenemos muchos libros, todos los libros que se llaman libros. Sin embargo, para referirse a ellos de forma individual se puede decir Libro1, Book2, etc Book3 WriteLine muestra el valor almacenado en un [0], que es 1. a [0] + + incrementar el valor almacenado en un [0] por uno. WriteLine mostrar ahora 2. A partir de entonces, la variable i se declara como un int. A continuacin, se inicializa a 1. Dentro de la funcin WriteLine tenemos a [i]. No se establece especficamente que la variable, en lugar

hemos dicho a [i].No hay ninguna variable llamada a [i], pero tiene un valor de 1, por lo que se lee como [1]. Por lo tanto el valor almacenado en un [1], que es de 10, se muestra. La prxima WriteLine muestra el valor almacenado en un [2], i se reinicializa a 2. Hacer esto hace que nuestro programa ms genrico. No hemos especifique lo contrario, que la variable, estamos dejando una variable llamada i decidir el nombre de la variable. El siguiente ejemplo muestra cmo las matrices se pueden utilizar dentro de los ciclos.
a.cs clase de zzz { public void Main () { int [] a; a = new int [3]; int i; for (i = 0; i <= 2; i + +) a [i] = i * 10; for (i = 0; i <= 2; i + +) System.Console.WriteLine (a [i]); } } Salida 0 10 20

La ventaja de utilizar matrices es que se puede decidir el nombre de la variable despus y tambin se puede utilizar en bucles. Aqu la 'a' es una matriz de enteros y el i es una variable de tipo int. El tamao de la matriz es 3, es decir que puede almacenar tres enteros. El primer bucle for se utiliza para inicializar los elementos individuales del arreglo. En el bucle, i se inicializa a 0. La condicin i <= 2 indica que el ciclo se ejecutar tres veces. As, cuando el control entra en el bucle, por primera vez i es 0. Mirando el lado derecho de la expresin, i * 10 ahora se lee como 0 * 10, que es 0. Por lo tanto, a [i] que se lee como un [0] se inicializa a 0. i + + incrementa el valor de i a 1. La segunda vez que a [i] se puede leer como un [1], que se iniciar a 10. A partir de entonces, a [i] se puede leer como un [2] y se inicializa a 20 como es ahora 2. Ahora voy a ser de 3, por lo que la condicin se evala como falsa y el bucle termine. El segundo bucle de muestra los valores almacenados en la matriz. Esto es similar al bucle anterior. Aqu se nos muestra los valores de los elementos individuales del arreglo. A medida que el bucle for se ejecuta, WriteLine leer a [i] como [0], a [1] y [2] en cada caso. Como tal, WriteLine muestra 0,10,20. As, a partir desde el principio y va hasta el final, todos los valores almacenados en la matriz se muestran. Las matrices tambin se puede utilizar en una instruccin foreach. Esto se ejemplifica en el siguiente programa.

a.cs clase de zzz { public void Main () { int [] a; a = new int [3]; a [0] = 1; a [1] = 10; un [2] = 20; foreach (int i en a) System.Console.WriteLine (i); } } Salida 1 10 20

La instruccin foreach se enumeran los elementos de la matriz. Se ejecuta una sentencia para cada elemento de la matriz o coleccin. 'A' es una matriz de tipo int que puede almacenar tres puntos. a [0], a [1] y [2] son los elementos o elementos de la matriz. Se han inicializado a 1, 10 y 20 respectivamente. En la instruccin foreach tenemos (int i en una). i es una variable de tipo int y una es la matriz creada anteriormente. El primer elemento de la 'a' es la matriz a [0] y tiene el valor 1. La instruccin foreach toma este valor y lo almacena en i. Ya que ahora tiene el valor 1, WriteLine muestra 1. El segundo elemento es un [1]. Se recoge su valor, que es 10 y la almacena en i. As que ahora tiene el valor 10. WriteLine mostrar ahora 10. Esto se enciende para todos los elementos de la matriz. Nuestra amplia 'a' se compone de tres elementos. Por lo tanto el foreach se ejecuta la instruccin WriteLine para cada uno de ellos y mostrar sus valores 1,10 y 20. La variable i slo est disponible en el foreach. El foreach hace que sea ms fcil para nosotros para funcionar a travs de todos los miembros de cualquier matriz.

Parmetros Revisited con out y ref


Las variables son la piedra angular de los lenguajes de programacin. En cierto modo, son como los elementos contenidos en una bolsa. Usted puede poner un elemento en una bolsa, retrela de la misma, o sustituirla por otra. Nuestros prximos programas se explicarn a lo largo de estas lneas.
a.cs clase de zzz { public void Main () { int i = 100; yyy un; un nuevo yyy = (); a.abc (i); System.Console.WriteLine (i); } }

clase yyy { public void abc (int i) { System.Console.WriteLine (i); i = 10; } } Salida 100 100

'A' es un objeto que se ve yyy. La variable 'i' se inicializa a un valor de 100. A continuacin, el objeto 'a' que se parece a yyy se crea. Ahora estamos llamando a la funcin con un parmetro abc 'i'. Dentro de la funcin abc estamos imprimiendo el valor de i. Cuando llamamos a la funcin principal de la ABC, que tena un valor de 100. As que la variable i en el ABC tambin tiene un valor de 100. As WriteLine mostrar el valor 100. Ahora estamos asignando un nuevo valor ia 10. Sin embargo, el i que cambia es el parmetro i en el ABC, y no la i de la principal en ZZZ. Es como tener dos bolsas similares, en los que cambia el contenido de uno solo. As que el WriteLine en el principal volver a imprimir 100. As, la variable i dentro de la funcin abc es temporal. Slo existe dentro de la '{' y '}' llaves de la funcin. Por lo tanto, este "yo" es local a la funcin. Su valor no est disponible en principal. Es como la memoria, temporal. Existe siempre y cuando usted est leyendo este libro. Una vez que el libro es sobre todo se olvida! Por lo tanto por favor no llame a la variable i en el ABC como yo porque va a confundir a todo el mundo. As, i en el ABC no tiene nada que ver con la i en el principal. Ergo, el cambio de i en el ABC no tendr ningn efecto sobre la i en el principal. Sin embargo, podra darse la situacin en la que le gustara que el abc de funciones para cambiar el valor de i. En este contexto que usted est diciendo, estoy dando una variable a una funcin de abc, usarlo, pero tambin me gusta la funcin de abc para cambiarlo. Y una vez que su valor se cambia en la funcin, es decir, el valor de cambio debe estar disponible en el principal. Vamos a ver cmo podemos manejar una situacin como esa.
a.cs clase de zzz { public void Main () { yyy un; int i = 100; un nuevo yyy = (); a.abc (i); System.Console.WriteLine (i); } } clase yyy { public void abc (a int i) { i = 10;

} } Error del compilador a.cs (8,1): CS1502 de error: El mejor partido de mtodo sobrecargado para 'yyy.abc (a int)' tiene algunos argumentos no vlidos. a.cs (8,7): error CS1503: argumento '1 ': no se puede convertir de' int 'a' a int '.

Este programa es exactamente igual que el anterior. El nico cambio es que hemos aadido "fuera" de la palabra en funcin de la ABC junto con el parmetro i. Nos da un error en la compilacin de este programa. Te das cuenta, estamos diciendo a.abc (i) en el principal, pero en la funcin que estamos diciendo abc (a int i). "Fuera" es la clave para resolver nuestro problema anterior. "Fuera" significa cualquier cambio que usted har en ABC, que ser visible fuera de la funcin tambin. Tenga en cuenta que no importa lo que ustedes llaman la variable en funcin de la ABC, el original va a cambiar. As, en lugar de decir abc (a int i) se podra haber utilizado otra variable. En ese caso, si usted dijo abc (a int p) sera absolutamente legal. Para acabar con el error se debe especificar "hacia fuera", mientras que llamar a la funcin as. Ahora que hemos reescrito el programa con el cambio anterior.
a.cs clase de zzz { public void Main () { yyy un; int i = 100; un nuevo yyy = (); a.abc (con i); System.Console.WriteLine (i); } } yyy clase { public void abc (a int i) { i = 10; } } Salida 10

En este programa, ahora tenemos "out" en ambos casos: en la llamada a la funcin y la funcin misma. As diciendo a.abc (que yo) que est dando a entender que usted est permitiendo que la funcin de abc para cambiar el valor de i. Luego, en la definicin de la funcin, tambin tenemos "fuera" de la palabra, por lo que sabe que va a cambiar y por lo tanto ahora cambia en el original. Por lo tanto, WriteLine se muestra el nuevo valor 10. Ahora estamos utilizando 'ref' de la palabra en lugar de "fuera". Vamos a ver los efectos de hacerlo.
a.cs clase de zzz { public void Main ()

{ yyy un; int i = 100; un nuevo yyy = (); a.abc (ref i); System.Console.WriteLine (i); } } clase yyy { public void abc (ref int j) { J = 10; } } Salida 10

Este programa se ejecuta sin problemas y da el mismo resultado que anteriormente. Se muestra el valor 10. As que en 'ref' ese sentido es como "fuera". En cualquier caso, el valor original de 'i' cambios. Por lo tanto, si usted est llamando a la funcin con 'ref', entonces 'ref' del Estado en la funcin tambin. Si se llama a la funcin con "out" a continuacin, dar 'out' en la funcin tambin. Juego para un poco de experimentacin? Vamos a tratar de ejecutar este programa sin inicializar la variable i.
a.cs clase de zzz { public void Main () { yyy un; int i; un nuevo yyy = (); a.abc (ref i); System.Console.WriteLine (i); } } clase yyy { public void abc (ref int j) { J = 10; } } Error del compilador a.cs (8,11): error cs0165: uso de la variable local no asignada 'i'

Aqu estamos diciendo int i. Tenga en cuenta que estamos no i la inicializacin. Estamos utilizando la 'ref' que nos da un error. El error dice que 'el uso de la variable local no asignada, posiblemente,

i'. Aqu no se ha inicializado i y, sin embargo estamos tratando de usarlo, por lo que obtenemos un error. Ahora, echemos un vistazo a el siguiente ejemplo. Aqu tenemos el mismo programa slo que ahora estamos usando 'a' en lugar de ref.
a.cs clase de zzz { public void Main () { yyy un; int i; un nuevo yyy = (); a.abc (con i); System.Console.WriteLine (i); } } clase yyy { public void abc (a int j) { J = 10; } } Salida 10

En este programa no he inicializado bien, pero esta vez no conseguimos ningn error. Esto viene a demostrar que cuando se utiliza 'ref' la variable debe ser inicializado y slo entonces se puede cambiar su valor. En el caso de "fuera" que no tiene que inicializar la variable para cambiar su valor. Pero por qu esta diferenciacin? Esto es as porque en el caso de 'ref' se puede leer el valor de la variable, as como escribir en l. Por lo tanto, si uno tiene que leer el valor de la variable, ste debe ser inicializado antes de mano. Pero es su criterio si desea cambiar el valor, ledo, o hacer ambas cosas. Pero en el caso de "fuera" slo se puede escribir, es decir, slo se puede cambiar el valor de la variable, no puede leerlo. As, en caso de "hacia fuera" ya que no ha ledo la variable no importa incluso si no se inicializa. Esto se ejemplifica con la ayuda de los programas prximos. En el siguiente programa hemos i inicializado. Ntese aqu que estamos usando "hacia fuera".
a.cs clase de zzz { public void Main () { yyy un;

int i = 10; un nuevo yyy = (); a.abc (con i); System.Console.WriteLine (i); } } clase yyy { public void abc (a int j) { System.Console.WriteLine (j); J = 10; } } Error del compilador a.cs (16,26): error cs0165: uso de la variable local no asignada 'j'

Dentro de la funcin que estamos abc primera impresin del valor de i mediante la instruccin WriteLine. Eso significa que estamos tratando de leer el valor de i que se pasa a la variable j en el rea abc funcin.Pero con 'out' no puede leer los valores por lo tanto, obtenemos un error. Ahora bien, si se intenta el mismo programa con 'ref' en lugar de "fuera" no se va a ningn error. Esto es porque con 'ref' se puede leer los valores, as como cambiarlos. Sin embargo, tenga en cuenta que todos los parmetros 'out' debe ser inicializado o de lo contrario obtendr un error de forma que el compilador de la siguiente manera.
a.cs clase de zzz { public void Main () { yyy un; int i = 10; un nuevo yyy = (); a.abc (con i); System.Console.WriteLine (i); } } clase yyy { public void abc (a int j) { } } Error del compilador a.cs (14,13): error CS0177: 'j' El parmetro de salida debe ser asignado a antes del control deja el mtodo actual

Entonces, dnde podemos usar 'out'? Podemos usar "fuera" si queremos que la funcin de hacer algunos clculos y llenar la variable.

a.cs clase de zzz { public void Main () { yyy un; int i = 10; un nuevo yyy = (); a.abc (con i); System.Console.WriteLine (i); } } clase yyy { public void abc (a int i) { i = 20 * 20; } } Salida 400

En este programa que estamos utilizando "out". Estamos multiplicando 20 por 20 y almacenar el resultado en el 400 i. De esta manera el valor de i se cambia y WriteLine se imprimir 400. El siguiente ejemplo va a hacer las cosas tan claras como la luz del da.
a.cs clase de zzz { public void Main () { yyy un; int i = 10; int k = 20; int m; un nuevo yyy = (); m = a.abc (a i, a k); System.Console.WriteLine System.Console.WriteLine System.Console.WriteLine } } clase yyy { public int abc (int x fuera, { int j; x = 30, y = 10; j = x * y; volver j;

(i); (k); (m);

fuera int y)

} } Salida 30 10 300

Despus de especificar que se parece a yyy, las dos variables i y k se inicializan con los valores 10 y 20, respectivamente. A continuacin, el objeto se crea una. La tercera variable m es de tipo int y se utiliza para almacenar el valor devuelto de la funcin de abc. Mediante el uso de "fuera", la funcin de ABC se llama con dos parmetros, I y K. La funcin de ABC tiene variables x e y. Dentro de la funcin de otra variable j se declara de tipo int. La variables x e y se asignan nuevos valores 30 y 10 respectivamente. Sus valores se multiplican y se almacena en j, es decir, 300. La instruccin de retorno j siguiente dar el valor de j, que se almacena en m. Ahora WriteLine mostrar el valor de i como 30. Esto es porque con la funcin de abc llenamos i con el valor 30. Del mismo modo, la declaracin WriteLine prximo imprimir el valor de k, que es 10. Entonces imprimimos el valor de m, que es de 300. En pocas palabrasEn el caso de los dos 'ref' y 'fuera' de los cambios originales. Un punto a destacar es que cuando decimos 'ref' significa que se inicializa la variable. La funcin de ABC espera que la variable que se inicializa para que la funcin se puede utilizar el valor de la variable. Cuando la variable cambia el cambio se refleja afuera. Por lo tanto, cada vez que dicen 'ref' la variable tiene que ser inicializada, de lo contrario se produce un error. La funcin se asume que la variable se inicializa, ya que espera leer el valor. Usted puede optar por leer el valor o cambiarlo o hacer ambas cosas. Pero cuando usted dice "fuera" que implica que no se va a inicializar la variable, que la funcin de ABC no se va a utilizar el valor, slo se va a cambiar el valor. Cuando hay un "out", ABC puede utilizar la variable, incluso si no se inicializa. Esto es porque usted no puede leer el valor en el caso de un "out" variable, la funcin slo se puede cambiar el valor. En otras palabras, tiene que cambiar el valor de la variable para evitar cualquier error.

También podría gustarte